ec2launcher 1.1.1 → 1.1.2
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/CHANGELOG.md +4 -0
- data/lib/ec2launcher/dsl/application.rb +2 -0
- data/lib/ec2launcher/dsl/environment.rb +2 -0
- data/lib/ec2launcher/version.rb +1 -1
- data/lib/ec2launcher.rb +20 -18
- metadata +2 -3
data/CHANGELOG.md
CHANGED
@@ -41,6 +41,7 @@ module EC2Launcher
|
|
41
41
|
dsl_accessor :availability_zone
|
42
42
|
dsl_accessor :basename
|
43
43
|
dsl_accessor :inherit
|
44
|
+
dsl_accessor :iam_profile
|
44
45
|
dsl_accessor :instance_type
|
45
46
|
dsl_accessor :name_suffix
|
46
47
|
dsl_accessor :subnet
|
@@ -157,6 +158,7 @@ module EC2Launcher
|
|
157
158
|
other_server.elb.keys.each {|env_name| @elb[env_name] = other_server.elb[env_name] }
|
158
159
|
end
|
159
160
|
|
161
|
+
@iam_profile = other_server.iam_profile unless other_server.iam_profile.nil?
|
160
162
|
@instance_type = other_server.instance_type unless other_server.instance_type.nil?
|
161
163
|
@name_suffix = other_server.name_suffix unless other_server.name_suffix.nil?
|
162
164
|
|
@@ -22,6 +22,7 @@ module EC2Launcher
|
|
22
22
|
dsl_accessor :chef_validation_pem_url
|
23
23
|
dsl_accessor :domain_name
|
24
24
|
dsl_accessor :gem_path
|
25
|
+
dsl_accessor :iam_profile
|
25
26
|
dsl_accessor :inherit
|
26
27
|
dsl_accessor :key_name
|
27
28
|
dsl_accessor :knife_path
|
@@ -89,6 +90,7 @@ module EC2Launcher
|
|
89
90
|
@domain_name = other_env.domain_name unless other_env.domain_name.nil?
|
90
91
|
@email_notifications = other_env.email_notifications unless other_env.email_notifications.nil?
|
91
92
|
@gem_path = other_env.gem_path unless other_env.gem_path.nil?
|
93
|
+
@iam_profile = other_env.iam_profile unless other_env.iam_profile.nil?
|
92
94
|
@key_name = other_env.key_name unless other_env.key_name.nil?
|
93
95
|
@knife_path = other_env.knife_path unless other_env.knife_path.nil?
|
94
96
|
@ruby_path = other_env.ruby_path unless other_env.ruby_path.nil?
|
data/lib/ec2launcher/version.rb
CHANGED
data/lib/ec2launcher.rb
CHANGED
@@ -169,6 +169,12 @@ module EC2Launcher
|
|
169
169
|
exit 3
|
170
170
|
end
|
171
171
|
|
172
|
+
##############################
|
173
|
+
# IAM PROFILE
|
174
|
+
##############################
|
175
|
+
iam_profile = @environment.iam_profile
|
176
|
+
iam_profile ||= @application.iam_profile
|
177
|
+
|
172
178
|
##############################
|
173
179
|
# INSTANCE TYPE
|
174
180
|
##############################
|
@@ -280,6 +286,7 @@ module EC2Launcher
|
|
280
286
|
@log.info "Availability zone: #{availability_zone}"
|
281
287
|
@log.info "Key name : #{key_name}"
|
282
288
|
@log.info "Security groups : " + security_groups.collect {|name| "#{name} (#{sg_map[name].security_group_id})"}.join(", ")
|
289
|
+
@log.info "IAM profile : #{iam_profile}" if iam_profile
|
283
290
|
@log.info "Instance type : #{instance_type}"
|
284
291
|
@log.info "Architecture : #{instance_architecture}"
|
285
292
|
@log.info "AMI name : #{ami.ami_name}"
|
@@ -339,7 +346,7 @@ module EC2Launcher
|
|
339
346
|
block_device_tags = block_device_builder.generate_device_tags(fqdn_names[i], short_hostnames[i], @environment.name, @application.block_devices)
|
340
347
|
user_data = build_launch_command(fqdn_names[i], short_hostnames[i], roles, chef_validation_pem_url, aws_keyfile, gems, packages, email_notifications)
|
341
348
|
|
342
|
-
instance = launch_instance(fqdn_names[i], ami.ami_id, availability_zone, key_name, security_group_ids, instance_type, user_data, block_device_mappings, block_device_tags, subnet)
|
349
|
+
instance = launch_instance(fqdn_names[i], ami.ami_id, availability_zone, key_name, security_group_ids, iam_profile, instance_type, user_data, block_device_mappings, block_device_tags, subnet)
|
343
350
|
instances << instance
|
344
351
|
|
345
352
|
public_dns_name = get_instance_dns(instance, true)
|
@@ -504,6 +511,7 @@ module EC2Launcher
|
|
504
511
|
# @param [String] availability_zone EC2 availability zone to use
|
505
512
|
# @param [String] key_name EC2 SSH key to use.
|
506
513
|
# @param [Array<String>] security_group_ids list of security groups ids
|
514
|
+
# @param [String, nil] iam_profile The name or ARN of an IAM instance profile. May be nil.
|
507
515
|
# @param [String] instance_type EC2 instance type.
|
508
516
|
# @param [String] user_data command data to store pass to the instance in the EC2 user-data field.
|
509
517
|
# @param [Hash<String,Hash<String, String>, nil] block_device_mappings mapping of device names to block device details.
|
@@ -511,32 +519,26 @@ module EC2Launcher
|
|
511
519
|
# @param [Hash<String,Hash<String, String>>, nil] block_device_tags mapping of device names to hash objects with tags for the new EBS block devices.
|
512
520
|
#
|
513
521
|
# @return [AWS::EC2::Instance] newly created EC2 instance or nil if the launch failed.
|
514
|
-
def launch_instance(hostname, ami_id, availability_zone, key_name, security_group_ids, instance_type, user_data, block_device_mappings = nil, block_device_tags = nil, vpc_subnet = nil)
|
522
|
+
def launch_instance(hostname, ami_id, availability_zone, key_name, security_group_ids, iam_profile, instance_type, user_data, block_device_mappings = nil, block_device_tags = nil, vpc_subnet = nil)
|
515
523
|
@log.warn "Launching instance... #{hostname}"
|
516
524
|
new_instance = nil
|
517
525
|
run_with_backoff(30, 1, "launching instance") do
|
518
|
-
|
519
|
-
new_instance = @ec2.instances.create(
|
526
|
+
launch_mapping = {
|
520
527
|
:image_id => ami_id,
|
521
528
|
:availability_zone => availability_zone,
|
522
529
|
:key_name => key_name,
|
523
530
|
:security_group_ids => security_group_ids,
|
524
531
|
:user_data => user_data,
|
525
|
-
:instance_type => instance_type
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
new_instance = @ec2.instances.create(
|
530
|
-
:image_id => ami_id,
|
531
|
-
:availability_zone => availability_zone,
|
532
|
-
:key_name => key_name,
|
533
|
-
:security_group_ids => security_group_ids,
|
534
|
-
:user_data => user_data,
|
535
|
-
:instance_type => instance_type,
|
536
|
-
:block_device_mappings => block_device_mappings,
|
537
|
-
:subnet => vpc_subnet
|
538
|
-
)
|
532
|
+
:instance_type => instance_type
|
533
|
+
}
|
534
|
+
unless block_device_mappings.nil? || block_device_mappings.keys.empty?
|
535
|
+
launch_mapping[:block_device_mappings] = block_device_mappings
|
539
536
|
end
|
537
|
+
|
538
|
+
launch_mapping[:iam_profile] = iam_profile if iam_profile
|
539
|
+
launch_mapping[:subnet] = vpc_subnet if vpc_subnet
|
540
|
+
|
541
|
+
new_instance = @ec2.instances.create(launch_mapping)
|
540
542
|
end
|
541
543
|
sleep 5
|
542
544
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ec2launcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
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-09-
|
12
|
+
date: 2012-09-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|
@@ -107,4 +107,3 @@ signing_key:
|
|
107
107
|
specification_version: 3
|
108
108
|
summary: Tool to launch EC2 instances.
|
109
109
|
test_files: []
|
110
|
-
has_rdoc:
|