cloudster 2.7.0 → 2.8.0
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.
- data/README.md +2 -1
- data/VERSION +1 -1
- data/cloudster.gemspec +2 -2
- data/lib/cloudster/ec2.rb +12 -3
- data/spec/ec2_spec.rb +5 -4
- metadata +3 -3
data/README.md
CHANGED
@@ -15,7 +15,8 @@ Create AWS resources :
|
|
15
15
|
app_server = Cloudster::Ec2.new(:name => 'AppServer',
|
16
16
|
:key_name => 'mykey',
|
17
17
|
:image_id => 'ami_image_id',
|
18
|
-
:instance_type => 't1.micro'
|
18
|
+
:instance_type => 't1.micro',
|
19
|
+
:security_groups => ["TopSecurityGroup"]
|
19
20
|
)
|
20
21
|
|
21
22
|
chef_client = Cloudster::ChefClient.new(
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.8.0
|
data/cloudster.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "cloudster"
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.8.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Emil Soman"]
|
12
|
-
s.date = "2012-11-
|
12
|
+
s.date = "2012-11-21"
|
13
13
|
s.description = "Cloudster is a Ruby gem that was born to cut the learning curve involved \n in writing your own CloudFormation templates. If you don't know what a CloudFormation template is, \n but know about the AWS Cloud offerings, you can still use cloudster to provision your stack. \n Still in infancy , cloudster can create a very basic stack like a breeze. All kinds of contribution welcome !"
|
14
14
|
s.email = "emil.soman@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/cloudster/ec2.rb
CHANGED
@@ -13,7 +13,8 @@ module Cloudster
|
|
13
13
|
# :name => 'AppServer',
|
14
14
|
# :key_name => 'mykey',
|
15
15
|
# :image_id => 'ami_image_id',
|
16
|
-
# :instance_type => 't1.micro'
|
16
|
+
# :instance_type => 't1.micro',
|
17
|
+
# :security_groups => ["TopSecurityGroup"]
|
17
18
|
# )
|
18
19
|
#
|
19
20
|
# ==== Parameters
|
@@ -22,12 +23,14 @@ module Cloudster
|
|
22
23
|
# * :key_name: String containing the name of the keypair to be used for SSH
|
23
24
|
# * :image_id: String containing the AMI image id to be used while creating the Ec2 resource
|
24
25
|
# * :instance_type: String containing instance type ( Example : t1.micro )
|
26
|
+
# * :security_groups: Array containing names of existing SecurityGroups already defined using AWS console
|
25
27
|
def initialize(options = {})
|
26
28
|
require_options(options, [:name, :key_name, :image_id])
|
27
29
|
@name = options[:name]
|
28
30
|
@key_name = options[:key_name]
|
29
31
|
@image_id = options[:image_id]
|
30
32
|
@instance_type = options[:instance_type]
|
33
|
+
@security_groups = options[:security_groups]
|
31
34
|
end
|
32
35
|
|
33
36
|
# Returns a Ruby hash version of the Cloud Formation template for the resource instance
|
@@ -37,14 +40,15 @@ module Cloudster
|
|
37
40
|
# :name => 'AppServer',
|
38
41
|
# :key_name => 'mykey',
|
39
42
|
# :image_id => 'ami_image_id',
|
40
|
-
# :instance_type => 't1.micro'
|
43
|
+
# :instance_type => 't1.micro',
|
44
|
+
# :security_groups => ["SecurityGroup"]
|
41
45
|
# )
|
42
46
|
# ec2.template
|
43
47
|
#
|
44
48
|
# ==== Returns
|
45
49
|
# * Ruby hash version of the Cloud Formation template for the resource instance
|
46
50
|
def template
|
47
|
-
@template ||= Ec2.template({:name =>@name, :key_name => @key_name, :image_id => @image_id, :instance_type => @instance_type})
|
51
|
+
@template ||= Ec2.template({:name =>@name, :key_name => @key_name, :image_id => @image_id, :instance_type => @instance_type, :security_groups => @security_groups})
|
48
52
|
end
|
49
53
|
|
50
54
|
# Class method that returns a Ruby hash version of the Cloud Formation template
|
@@ -64,6 +68,7 @@ module Cloudster
|
|
64
68
|
# * :key_name: String containing the name of the keypair to be used for SSH
|
65
69
|
# * :image_id: String containing the AMI image id to be used while creating the Ec2 resource
|
66
70
|
# * :instance_type: String containing instance type ( Example : t1.micro )
|
71
|
+
# * :security_groups: Array containing names of existing SecurityGroups already defined using AWS console
|
67
72
|
#
|
68
73
|
# ==== Returns
|
69
74
|
# * Ruby hash version of the Cloud Formation template
|
@@ -72,6 +77,10 @@ module Cloudster
|
|
72
77
|
properties = {}
|
73
78
|
properties.merge!({"KeyName" => options[:key_name], "ImageId" => options[:image_id]})
|
74
79
|
properties.merge!({"InstanceType" => options[:instance_type]}) unless options[:instance_type].nil?
|
80
|
+
unless options[:security_groups].nil?
|
81
|
+
security_groups = options[:security_groups].to_a
|
82
|
+
properties.merge!({"SecurityGroups" => security_groups})
|
83
|
+
end
|
75
84
|
template = {'Resources' => {
|
76
85
|
options[:name] => {
|
77
86
|
'Type' => 'AWS::EC2::Instance',
|
data/spec/ec2_spec.rb
CHANGED
@@ -14,8 +14,9 @@ describe Cloudster::Ec2 do
|
|
14
14
|
end
|
15
15
|
describe '#template' do
|
16
16
|
it "should return a ruby hash for the resource cloudformation template" do
|
17
|
-
ec2 = Cloudster::Ec2.new(:key_name => 'testkey', :image_id => 'image_id', :name => 'name', :instance_type => 't1.micro' )
|
18
|
-
ec2.template.should == {'Resources' => {'name' => {'Type' => 'AWS::EC2::Instance', 'Properties' => {"KeyName" => 'testkey', "ImageId" => 'image_id', "InstanceType" => 't1.micro'} }}}
|
17
|
+
ec2 = Cloudster::Ec2.new(:key_name => 'testkey', :image_id => 'image_id', :name => 'name', :instance_type => 't1.micro', :security_groups => ["testSecurityGroup1", "testSecurityGroup2"] )
|
18
|
+
ec2.template.should == {'Resources' => {'name' => {'Type' => 'AWS::EC2::Instance', 'Properties' => {"KeyName" => 'testkey', "ImageId" => 'image_id', "InstanceType" => 't1.micro', "SecurityGroups" => ["testSecurityGroup1", "testSecurityGroup2"]} }}}
|
19
|
+
puts ec2.template.to_json
|
19
20
|
end
|
20
21
|
end
|
21
22
|
describe '.template' do
|
@@ -23,8 +24,8 @@ describe Cloudster::Ec2 do
|
|
23
24
|
expect { Cloudster::Ec2.template() }.to raise_error(ArgumentError, 'Missing required argument: name,key_name,image_id')
|
24
25
|
end
|
25
26
|
it "should return a ruby hash for the resource cloudformation template" do
|
26
|
-
hash = Cloudster::Ec2.template(:key_name => 'testkey', :image_id => 'image_id', :name => 'name', :instance_type => 't1.micro')
|
27
|
-
hash.should == {'Resources' => {'name' => {'Type' => 'AWS::EC2::Instance', 'Properties' => {"KeyName" => 'testkey', "ImageId" => 'image_id', "InstanceType" => 't1.micro'} }}}
|
27
|
+
hash = Cloudster::Ec2.template(:key_name => 'testkey', :image_id => 'image_id', :name => 'name', :instance_type => 't1.micro', :security_groups => ["testSecurityGroup1"])
|
28
|
+
hash.should == {'Resources' => {'name' => {'Type' => 'AWS::EC2::Instance', 'Properties' => {"KeyName" => 'testkey', "ImageId" => 'image_id', "InstanceType" => 't1.micro', "SecurityGroups" => ["testSecurityGroup1"]} }}}
|
28
29
|
end
|
29
30
|
end
|
30
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
158
|
version: '0'
|
159
159
|
segments:
|
160
160
|
- 0
|
161
|
-
hash:
|
161
|
+
hash: -464146239
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
none: false
|
164
164
|
requirements:
|