cloud-maker 0.7.0 → 0.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/lib/cloud_maker/config.rb +16 -5
- data/lib/cloud_maker/ec2.rb +18 -3
- data/lib/cloud_maker/shell_executor.rb +1 -1
- metadata +8 -3
data/lib/cloud_maker/config.rb
CHANGED
@@ -407,6 +407,10 @@ module CloudMaker
|
|
407
407
|
# precedence to all values set in this one. Arrays will be merged as
|
408
408
|
# imported_array.concat(current_array).uniq.
|
409
409
|
#
|
410
|
+
# "--" can be used as a knockout prefix, ie. "--foo" will delete the key "foo"
|
411
|
+
# when an array is merged, or "--" will delete the entire existing contents of
|
412
|
+
# the array.
|
413
|
+
#
|
410
414
|
# It should be noted that this is not reference safe, ie. objects within
|
411
415
|
# cloud_maker_config will end up referenced from this config object as well.
|
412
416
|
#
|
@@ -414,11 +418,18 @@ module CloudMaker
|
|
414
418
|
#
|
415
419
|
# Returns nothing.
|
416
420
|
def import(cloud_maker_config)
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
421
|
+
[:options, :includes, :imports, :cloud_config, :extra_options].each do |key|
|
422
|
+
key = key.to_sym
|
423
|
+
#toss both of these into a hash because deep_merge only works on hashes
|
424
|
+
cloud_maker_config_hash = {:value => cloud_maker_config.send(key)}
|
425
|
+
self_hash = {:value => self.send(key)}
|
426
|
+
self.send(
|
427
|
+
:"#{key}=",
|
428
|
+
cloud_maker_config_hash.deep_merge!(
|
429
|
+
self_hash, :preserve_unmergeables => false, :knockout_prefix => '--'
|
430
|
+
)[:value]
|
431
|
+
)
|
432
|
+
end
|
422
433
|
end
|
423
434
|
end
|
424
435
|
end
|
data/lib/cloud_maker/ec2.rb
CHANGED
@@ -42,6 +42,9 @@ module CloudMaker
|
|
42
42
|
'cname' => {
|
43
43
|
'default' => '',
|
44
44
|
'description' => "A dns entry you would like to CNAME to this instance."
|
45
|
+
},
|
46
|
+
'block_device_mappings' => {
|
47
|
+
'description' => "A hash of block devices mappings. ie. { /dev/sda1 => { volume_size => <value_in_GB>, snapshot_id => <id>, delete_on_termination => <boolean> } }"
|
45
48
|
}
|
46
49
|
}
|
47
50
|
}
|
@@ -107,7 +110,8 @@ module CloudMaker
|
|
107
110
|
else
|
108
111
|
region = ec2 # .instances.create will just put things in the default region
|
109
112
|
end
|
110
|
-
|
113
|
+
|
114
|
+
config = {
|
111
115
|
:image_id => cloud_maker_config['ami'],
|
112
116
|
:iam_instance_profile => cloud_maker_config['iam_role'],
|
113
117
|
:security_groups => cloud_maker_config['security_group'],
|
@@ -115,10 +119,21 @@ module CloudMaker
|
|
115
119
|
:key_name => cloud_maker_config['key_pair'],
|
116
120
|
:availability_zone => cloud_maker_config['availability_zone'],
|
117
121
|
:user_data => user_data
|
118
|
-
|
122
|
+
}
|
123
|
+
config[:block_device_mappings] = cloud_maker_config['block_device_mappings'] if cloud_maker_config['block_device_mappings']
|
124
|
+
|
125
|
+
instance = region.instances.create(config)
|
119
126
|
|
120
127
|
begin
|
121
|
-
|
128
|
+
if cloud_maker_config['tags']
|
129
|
+
# we can only set tags to be strings so make sure we convert all of our tags
|
130
|
+
# to strings
|
131
|
+
string_tags = cloud_maker_config['tags'].inject({}) do |hash, pair|
|
132
|
+
hash[pair[0]] = pair[1].to_s
|
133
|
+
hash
|
134
|
+
end
|
135
|
+
instance.tags.set(string_tags)
|
136
|
+
end
|
122
137
|
rescue AWS::EC2::Errors::InvalidInstanceID::NotFound => e
|
123
138
|
retries ||= 0
|
124
139
|
if retries < 5
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloud-maker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-10-
|
13
|
+
date: 2012-10-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: colorize
|
@@ -124,7 +124,12 @@ dependencies:
|
|
124
124
|
- - ! '>='
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
|
-
description:
|
127
|
+
description: CloudMaker is a tool for launching and configuring EC2 instances. It
|
128
|
+
works as an extension to the Ubuntu CloudInit system. It extends the configuration
|
129
|
+
format with a composition system and options to describe how you want an instance
|
130
|
+
to be launched. The goal of the project is to make building and launching instances
|
131
|
+
simple and repeatable. It accomplishes this by leveraging existing toolchains rather
|
132
|
+
than forcing people to learn a new and complicated system.
|
128
133
|
email: nathan.baxter@airbnb.com
|
129
134
|
executables:
|
130
135
|
- cloud-maker
|