zergrush_cf 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.gitignore +2 -0
- data/COPYING +1 -0
- data/LICENSE +1 -0
- data/README.md +113 -0
- data/Rakefile +1 -0
- data/lib/zergrush_cf/init.rb +197 -0
- data/lib/zergrush_cf/renderer.rb +50 -0
- data/lib/zergrush_cf/version.rb +26 -0
- data/resources/defaults.yaml +2 -0
- data/resources/option_schema.template +12 -0
- data/zergrush_cf.gemspec +31 -0
- metadata +126 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Y2YzZmVlNzZjYzQzZmI2MjRiYWM1ZjczYWFlNGM3MzhkYmYxMGY4Yg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZDg1NTk3ZThlMmIwNjg1ZTUwNWIxYWUyMzY2ZWJlZjYyOTQ3NmE5OA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
Njc4OWQ0MTI0Yjg3Njk5NzE0MTE5ZjNhODE4YTBjY2I3ZTEyMDFmODVjNjlk
|
10
|
+
OTAwMWRhZjZiOWYyYjIwZmEzOTBhOTNhOTNlZGFiOTQwNWM0NjM4YjUxNzRl
|
11
|
+
MGJlOGZlZTlmYjRlZTViZTNkNGIyNDg0MWRmZWVlNWJjZTQzOTU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NTM4YjM4MGYzNmMzNjVlMzljNTgwNDIwZDAzZDMyNzQ1YzgyMGFiZTAwOTUx
|
14
|
+
MWRjYjE3ZmNlZmMwYzRmZjkzZTMzYTRkMjIyNzhlNzgyZjI2OWU4ZWEwMjlk
|
15
|
+
Y2NjNjAwZWMxODVmMGM3MzlmMmI3YjhjMWI0MDgxNDJmYTFjOGU=
|
data/.gitignore
ADDED
data/COPYING
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
No copying restrictions/license given.
|
data/LICENSE
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
No license given.
|
data/README.md
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
Vagrant driver for Zerg
|
2
|
+
===
|
3
|
+
|
4
|
+
Dependencies
|
5
|
+
--------------
|
6
|
+
|
7
|
+
- [vagrant-aws](https://github.com/mitchellh/vagrant-aws)
|
8
|
+
- [vagrant-libvirt](https://github.com/pradels/vagrant-libvirt)
|
9
|
+
- [vagrant-omnibus](https://github.com/schisamo/vagrant-omnibus)
|
10
|
+
- [vagrant-berkshelf](https://github.com/berkshelf/vagrant-berkshelf)
|
11
|
+
|
12
|
+
Additional properties defined
|
13
|
+
--------------
|
14
|
+
|
15
|
+
######[Synchronized folders](resources/folder_schema.template)
|
16
|
+
|
17
|
+
Defined by [Vagrant synced folders](http://docs.vagrantup.com/v2/synced-folders/)
|
18
|
+
|
19
|
+
Example use:
|
20
|
+
```
|
21
|
+
...
|
22
|
+
"create": true,
|
23
|
+
"mount_options": ["rw", "vers=3", "tcp"]
|
24
|
+
...
|
25
|
+
```
|
26
|
+
|
27
|
+
######[Networks](resources/networks_schema.template)
|
28
|
+
|
29
|
+
Defined by [Vagrant networking](http://docs.vagrantup.com/v2/networking/index.html)
|
30
|
+
|
31
|
+
Example use:
|
32
|
+
```
|
33
|
+
...
|
34
|
+
"type": "public_network",
|
35
|
+
"bridge": "en1: Wi-Fi (AirPort)"
|
36
|
+
...
|
37
|
+
```
|
38
|
+
|
39
|
+
######[Driver options](resources/option_schema.template)
|
40
|
+
|
41
|
+
- providertype - One of the supported Vagrant providers. Currenlty supported providers are: virtualbox, libvirt, aws
|
42
|
+
- provider_options - hash of provider specific options.
|
43
|
+
- raw_options - if some of the provider options do not map to a hash format - you can specify them as an array of strings. Each string should start with '[provider].'
|
44
|
+
|
45
|
+
Example use:
|
46
|
+
```
|
47
|
+
...
|
48
|
+
"driver": {
|
49
|
+
"drivertype": "vagrant",
|
50
|
+
"driveroptions": [
|
51
|
+
{
|
52
|
+
"providertype": "aws",
|
53
|
+
"provider_options" : {
|
54
|
+
"instance_type": "t1.micro",
|
55
|
+
"access_key_id": "blah blah blah",
|
56
|
+
"secret_access_key": "yadda yadda",
|
57
|
+
"keypair_name": "HURGHBURGHLGHRL",
|
58
|
+
"ami": "ami-3fec7956",
|
59
|
+
"region": "us-east-1"
|
60
|
+
}
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"providertype": "virtualbox",
|
64
|
+
"provider_options" : {
|
65
|
+
"gui": false,
|
66
|
+
"memory": 256
|
67
|
+
},
|
68
|
+
"raw_options": [
|
69
|
+
"virtualbox.customize [\"modifyvm\", :id, \"--natdnsproxy1\", \"off\"]",
|
70
|
+
"virtualbox.customize [\"modifyvm\", :id, \"--natdnshostresolver1\", \"off\"]"
|
71
|
+
]
|
72
|
+
}
|
73
|
+
]
|
74
|
+
}
|
75
|
+
...
|
76
|
+
```
|
77
|
+
|
78
|
+
######[Forwarded ports](resources/ports_schema.template)
|
79
|
+
|
80
|
+
Defined by [Vagrant forwarded ports](http://docs.vagrantup.com/v2/networking/forwarded_ports.html)
|
81
|
+
|
82
|
+
Example use:
|
83
|
+
```
|
84
|
+
...
|
85
|
+
"guest_port": 8080,
|
86
|
+
"host_port": 80,
|
87
|
+
"protocol": "tcp"
|
88
|
+
...
|
89
|
+
```
|
90
|
+
|
91
|
+
######[SSH](resources/ssh_schema.template)
|
92
|
+
|
93
|
+
Defined by [Vagrant SSH](http://docs.vagrantup.com/v2/vagrantfile/ssh_settings.html)
|
94
|
+
|
95
|
+
Example use:
|
96
|
+
```
|
97
|
+
...
|
98
|
+
"username": "ubuntu",
|
99
|
+
"private_key_path": "PATH_TO_YOUR_PK",
|
100
|
+
"shell": "bash -l"
|
101
|
+
...
|
102
|
+
```
|
103
|
+
|
104
|
+
######[Tasks](resources/tasks_schema.template)
|
105
|
+
|
106
|
+
Describes what tasks a VM should run at provisioning step
|
107
|
+
|
108
|
+
- type - Type of task payload. 'shell', 'chef_client' or 'chef_solo'
|
109
|
+
- shell task parameters are defined by [Vagrant shell provisioner](http://docs.vagrantup.com/v2/provisioning/shell.html)
|
110
|
+
- chef_client and chef_solo task parameters map directly to Vagrant provisioner docs, **EXCEPT the node_name parameter**:
|
111
|
+
- [chef_solo provisioner](http://docs.vagrantup.com/v2/provisioning/chef_solo.html)
|
112
|
+
- [chef_client provisioner](https://docs.vagrantup.com/v2/provisioning/chef_client.html)
|
113
|
+
- [chef common options](http://docs.vagrantup.com/v2/provisioning/chef_common.html)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,197 @@
|
|
1
|
+
#--
|
2
|
+
|
3
|
+
# Copyright 2014 by MTN Sattelite Communications
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to
|
7
|
+
# deal in the Software without restriction, including without limitation the
|
8
|
+
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
9
|
+
# sell copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
require 'zerg'
|
25
|
+
require 'fog'
|
26
|
+
require 'excon'
|
27
|
+
require 'rbconfig'
|
28
|
+
require 'awesome_print'
|
29
|
+
require 'securerandom'
|
30
|
+
require 'ruby-progressbar'
|
31
|
+
require_relative 'renderer'
|
32
|
+
|
33
|
+
class CloudFormation < ZergGemPlugin::Plugin "/driver"
|
34
|
+
def rush hive_location, task_name, task_hash, debug
|
35
|
+
aws_key_id = task_hash["vm"]["driver"]["driveroptions"][0]["access_key_id"]
|
36
|
+
aws_secret = task_hash["vm"]["driver"]["driveroptions"][0]["secret_access_key"]
|
37
|
+
|
38
|
+
# eval possible environment variables
|
39
|
+
if aws_key_id =~ /^ENV\['.+'\]$/
|
40
|
+
aws_key_id = eval(aws_key_id)
|
41
|
+
end
|
42
|
+
|
43
|
+
if aws_secret =~ /^ENV\['.+'\]$/
|
44
|
+
aws_secret = eval(aws_secret)
|
45
|
+
end
|
46
|
+
|
47
|
+
abort("AWS key id is not specified in task") unless aws_key_id != nil
|
48
|
+
abort("AWS secret is not specified in task") unless aws_secret != nil
|
49
|
+
|
50
|
+
renderer = ZergrushCF::Renderer.new(
|
51
|
+
hive_location,
|
52
|
+
task_name,
|
53
|
+
task_hash)
|
54
|
+
template_body = renderer.render
|
55
|
+
|
56
|
+
cf = Fog::AWS::CloudFormation.new(
|
57
|
+
:aws_access_key_id => aws_key_id,
|
58
|
+
:aws_secret_access_key => aws_secret
|
59
|
+
)
|
60
|
+
|
61
|
+
# create the cloudformation stack
|
62
|
+
stack_name = "#{task_name}"
|
63
|
+
|
64
|
+
progressbar = nil
|
65
|
+
params = eval_params(task_hash["vm"]["driver"]["driveroptions"][0]["template_parameters"])
|
66
|
+
stack_info = cf.create_stack(stack_name, { 'DisableRollback' => true, 'TemplateBody' => template_body.to_json, 'Parameters' => params, 'Capabilities' => [ "CAPABILITY_IAM" ] })
|
67
|
+
|
68
|
+
# grab the id of the stack
|
69
|
+
stack_id = stack_info.body["StackId"]
|
70
|
+
puts("Creating stack #{stack_name} with id #{stack_id}\n-----------------------------")
|
71
|
+
progressbar = ProgressBar.create(:starting_at => 20, :total => nil)
|
72
|
+
|
73
|
+
# get stack outputs
|
74
|
+
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
75
|
+
|
76
|
+
until outputs_info.body["Stacks"][0]["StackStatus"] != "CREATE_IN_PROGRESS" do
|
77
|
+
progressbar.increment
|
78
|
+
sleep 2
|
79
|
+
|
80
|
+
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
81
|
+
end
|
82
|
+
progressbar.stop
|
83
|
+
abort "ERROR: Stack #{stack_name} creation failed. Refer to AWS CloudFormation console for further info." unless outputs_info.body["Stacks"][0]["StackStatus"] == "CREATE_COMPLETE"
|
84
|
+
|
85
|
+
puts("SUCCESS! Stack outputs:")
|
86
|
+
ap outputs_info.body["Stacks"][0]["Outputs"]
|
87
|
+
|
88
|
+
rescue Fog::Errors::Error => fog_cf_error
|
89
|
+
progressbar.stop unless progressbar == nil
|
90
|
+
abort ("ERROR: AWS error: #{fog_cf_error.message}")
|
91
|
+
end
|
92
|
+
|
93
|
+
def clean hive_location, task_name, task_hash, debug
|
94
|
+
|
95
|
+
aws_key_id = task_hash["vm"]["driver"]["driveroptions"][0]["access_key_id"]
|
96
|
+
aws_secret = task_hash["vm"]["driver"]["driveroptions"][0]["secret_access_key"]
|
97
|
+
|
98
|
+
# eval possible environment variables
|
99
|
+
if aws_key_id =~ /^ENV\['.+'\]$/
|
100
|
+
aws_key_id = eval(aws_key_id)
|
101
|
+
end
|
102
|
+
|
103
|
+
if aws_secret =~ /^ENV\['.+'\]$/
|
104
|
+
aws_secret = eval(aws_secret)
|
105
|
+
end
|
106
|
+
|
107
|
+
abort("AWS key id is not specified in task") unless aws_key_id != nil
|
108
|
+
abort("AWS secret is not specified in task") unless aws_secret != nil
|
109
|
+
|
110
|
+
puts("Cleaning task #{task_name} ...")
|
111
|
+
|
112
|
+
# run fog cleanup on the stack.
|
113
|
+
stack_name = "#{task_name}"
|
114
|
+
|
115
|
+
cf = Fog::AWS::CloudFormation.new(
|
116
|
+
:aws_access_key_id => aws_key_id,
|
117
|
+
:aws_secret_access_key => aws_secret
|
118
|
+
)
|
119
|
+
|
120
|
+
progressbar = nil
|
121
|
+
|
122
|
+
stack_info = cf.delete_stack(stack_name)
|
123
|
+
puts("Deleting stack #{stack_name}")
|
124
|
+
progressbar = ProgressBar.create(:starting_at => 20, :total => nil)
|
125
|
+
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
126
|
+
|
127
|
+
while outputs_info.body["Stacks"][0]["StackStatus"] == "DELETE_IN_PROGRESS" do
|
128
|
+
progressbar.increment
|
129
|
+
sleep 2
|
130
|
+
|
131
|
+
begin
|
132
|
+
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
133
|
+
rescue Fog::AWS::CloudFormation::NotFound
|
134
|
+
progressbar.stop
|
135
|
+
break
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
rescue Fog::AWS::CloudFormation::NotFound
|
140
|
+
progressbar.stop unless progressbar == nil
|
141
|
+
abort ("ERROR: Stack #{stack_name} was not found in AWS.")
|
142
|
+
rescue Fog::Errors::Error => fog_cf_error
|
143
|
+
progressbar.stop unless progressbar == nil
|
144
|
+
abort ("ERROR: AWS error: #{fog_cf_error.ai}")
|
145
|
+
end
|
146
|
+
|
147
|
+
def halt hive_location, task_name, task_hash, debug
|
148
|
+
puts("Halt is not implemented for CloudFormation.")
|
149
|
+
return
|
150
|
+
end
|
151
|
+
|
152
|
+
def task_schema
|
153
|
+
return nil
|
154
|
+
end
|
155
|
+
|
156
|
+
def option_schema
|
157
|
+
return File.open(File.join("#{File.dirname(__FILE__)}", "..", "..", "resources", "option_schema.template"), 'r').read
|
158
|
+
end
|
159
|
+
|
160
|
+
def folder_schema
|
161
|
+
return nil
|
162
|
+
end
|
163
|
+
|
164
|
+
def port_schema
|
165
|
+
return nil
|
166
|
+
end
|
167
|
+
|
168
|
+
def ssh_schema
|
169
|
+
return nil
|
170
|
+
end
|
171
|
+
|
172
|
+
def eval_params(params)
|
173
|
+
params.each do |k, v|
|
174
|
+
# If v is nil, an array is being iterated and the value is k.
|
175
|
+
# If v is not nil, a hash is being iterated and the value is v.
|
176
|
+
#
|
177
|
+
value = v || k
|
178
|
+
|
179
|
+
if value.is_a?(Hash) || value.is_a?(Array)
|
180
|
+
eval_params(value)
|
181
|
+
else
|
182
|
+
if value.is_a?(String)
|
183
|
+
if value =~ /(^ENV\['.+'\]$)/
|
184
|
+
if v.nil?
|
185
|
+
k.replace eval(value)
|
186
|
+
else
|
187
|
+
params[k] = eval(value)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
return params
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#--
|
2
|
+
|
3
|
+
# Copyright 2014 by MTN Sattelite Communications
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to
|
7
|
+
# deal in the Software without restriction, including without limitation the
|
8
|
+
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
9
|
+
# sell copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
require 'fileutils'
|
25
|
+
|
26
|
+
module ZergrushCF
|
27
|
+
class Renderer
|
28
|
+
|
29
|
+
def initialize(hive_location, task_name, task_hash)
|
30
|
+
@vm = task_hash["vm"]
|
31
|
+
@name = task_name
|
32
|
+
@template = task_hash["vm"]["driver"]["driveroptions"][0]["template"]
|
33
|
+
@driver = task_hash["vm"]["driver"]["drivertype"]
|
34
|
+
@hive_location = hive_location
|
35
|
+
end
|
36
|
+
|
37
|
+
def render
|
38
|
+
puts ("Rendering driver templates...")
|
39
|
+
|
40
|
+
# write cloudformation template to a separate file
|
41
|
+
abort("CloudFormation template not specified!") unless @template != nil
|
42
|
+
|
43
|
+
puts ("Writing #{File.join(@hive_location, "driver", @driver, @name, "template.json")}...")
|
44
|
+
FileUtils.mkdir_p(File.join(@hive_location, "driver", @driver, @name))
|
45
|
+
File.open(File.join("#{@hive_location}", "driver", @vm["driver"]["drivertype"], @name, "template.json"), 'w') { |file| file.write(@template.to_json) }
|
46
|
+
|
47
|
+
return @template
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#--
|
2
|
+
|
3
|
+
# Copyright 2014 by MTN Sattelite Communications
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to
|
7
|
+
# deal in the Software without restriction, including without limitation the
|
8
|
+
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
9
|
+
# sell copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
module ZergrushCF
|
25
|
+
VERSION = "0.0.1"
|
26
|
+
end
|
data/zergrush_cf.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/zergrush_cf/version", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "zergrush_cf"
|
6
|
+
s.version = ZergrushCF::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["MTN Satellite Communications"]
|
9
|
+
s.email = ["Marat.Garafutdinov@mtnsat.com"]
|
10
|
+
s.homepage = "https://github.com/MTNSatelliteComm/zerg"
|
11
|
+
s.license = "MIT"
|
12
|
+
s.summary = "Amazon Cloud Formation driver for zergrush"
|
13
|
+
s.description = "Amazon Cloud Formation driver for zergrush"
|
14
|
+
|
15
|
+
s.required_rubygems_version = ">= 2.0.0"
|
16
|
+
s.rubyforge_project = "zergrush_cf"
|
17
|
+
|
18
|
+
s.add_development_dependency "bundler", ">= 1.0.0"
|
19
|
+
s.add_development_dependency "rake"
|
20
|
+
s.add_development_dependency "zergrush", ">= 0.0.7"
|
21
|
+
|
22
|
+
s.add_dependency "fog", ">=1.20.0"
|
23
|
+
s.add_dependency "ruby-progressbar", "1.4.2"
|
24
|
+
|
25
|
+
s.files = `git ls-files`.split("\n")
|
26
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
27
|
+
s.require_path = 'lib'
|
28
|
+
|
29
|
+
# metadata that marks this as a zergrush plugin
|
30
|
+
s.metadata = { "zergrushplugin" => "driver" }
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: zergrush_cf
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- MTN Satellite Communications
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.0
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: zergrush
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.0.7
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.0.7
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: fog
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.20.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.20.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ruby-progressbar
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.4.2
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.4.2
|
83
|
+
description: Amazon Cloud Formation driver for zergrush
|
84
|
+
email:
|
85
|
+
- Marat.Garafutdinov@mtnsat.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- COPYING
|
92
|
+
- LICENSE
|
93
|
+
- README.md
|
94
|
+
- Rakefile
|
95
|
+
- lib/zergrush_cf/init.rb
|
96
|
+
- lib/zergrush_cf/renderer.rb
|
97
|
+
- lib/zergrush_cf/version.rb
|
98
|
+
- resources/defaults.yaml
|
99
|
+
- resources/option_schema.template
|
100
|
+
- zergrush_cf.gemspec
|
101
|
+
homepage: https://github.com/MTNSatelliteComm/zerg
|
102
|
+
licenses:
|
103
|
+
- MIT
|
104
|
+
metadata:
|
105
|
+
zergrushplugin: driver
|
106
|
+
post_install_message:
|
107
|
+
rdoc_options: []
|
108
|
+
require_paths:
|
109
|
+
- lib
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 2.0.0
|
120
|
+
requirements: []
|
121
|
+
rubyforge_project: zergrush_cf
|
122
|
+
rubygems_version: 2.2.2
|
123
|
+
signing_key:
|
124
|
+
specification_version: 4
|
125
|
+
summary: Amazon Cloud Formation driver for zergrush
|
126
|
+
test_files: []
|