chef-provisioning-fog 0.11 → 0.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fe71d09d45a8426eb7af5b9367aac358cf752124
4
- data.tar.gz: 0c454ebeb8827924742c91f1c566c90f6d6f3560
3
+ metadata.gz: 34990906985f7a7c4de47ef2a7e670a309412324
4
+ data.tar.gz: ad07082eaa71fc18afdc44b5fbd22819ffc75998
5
5
  SHA512:
6
- metadata.gz: 121ff3e73fefe9f6b401727831a46d47b2a7550c07fe0f6ec71915883e7ff7da8626a0989758b674768593149046ecb3a3ba49cb55fffcd112dd2a1d7364b9e8
7
- data.tar.gz: 34447372a2c4605cc90b4a476aef6454be76892ccfd88b27a85d93edce61d86e810888d115cadba6425f8cd7706579bad125850e8473af1ebda42b542a0f5aa2
6
+ metadata.gz: 62236621c239d507ed1393e3a6780ca72966e7f27a46d4954ea5ca4da066dc18b826c5a2cf7f3fe4b251decec583e9212774a0614228abd62a4e6f379c400eec
7
+ data.tar.gz: 1b7e1878546996f6d05790f3efbf5d0b855aa88db4a77553ef08c039a31c3f36979eedca140311d78a7f826339b31502ea2fef266b7902f40a3d48d8feb4579e
@@ -316,7 +316,6 @@ module FogDriver
316
316
  description = [ "creating #{machine_description} on #{driver_url}" ]
317
317
  bootstrap_options.each_pair { |key,value| description << " #{key}: #{value.inspect}" }
318
318
  action_handler.report_progress description
319
-
320
319
  if action_handler.should_perform_actions
321
320
  # Actually create the servers
322
321
  create_many_servers(machine_specs.size, bootstrap_options, parallelizer) do |server|
@@ -341,7 +340,7 @@ module FogDriver
341
340
  end
342
341
 
343
342
  if machine_specs.size > 0
344
- raise "Not all machines were created by create_many_machines!"
343
+ raise "Not all machines were created by create_many_servers!"
345
344
  end
346
345
  end
347
346
  end.to_a
@@ -349,7 +348,8 @@ module FogDriver
349
348
 
350
349
  def create_many_servers(num_servers, bootstrap_options, parallelizer)
351
350
  parallelizer.parallelize(1.upto(num_servers)) do |i|
352
- server = compute.servers.create(bootstrap_options)
351
+ clean_bootstrap_options = Marshal.load(Marshal.dump(bootstrap_options)) # Prevent destructive operations on bootstrap_options.
352
+ server = compute.servers.create(clean_bootstrap_options)
353
353
  yield server if block_given?
354
354
  server
355
355
  end.to_a
@@ -572,9 +572,10 @@ module FogDriver
572
572
  # Get the private key for a machine - prioritize the server data, fall back to the
573
573
  # the machine spec data, and if that doesn't work, raise an exception.
574
574
  # @param [Hash] machine_spec Machine spec data
575
+ # @param [Hash] machine_options Machine options
575
576
  # @param [Chef::Provisioning::Machine] server a Machine representing the server
576
577
  # @return [String] PEM-encoded private key
577
- def private_key_for(machine_spec, server)
578
+ def private_key_for(machine_spec, machine_options, server)
578
579
  if server.respond_to?(:private_key) && server.private_key
579
580
  server.private_key
580
581
  elsif server.respond_to?(:key_name) && server.key_name
@@ -602,10 +603,13 @@ module FogDriver
602
603
  def ssh_options_for(machine_spec, machine_options, server)
603
604
  result = {
604
605
  :auth_methods => [ 'publickey' ],
605
- :keys_only => true,
606
606
  :host_key_alias => "#{server.id}.#{provider}"
607
607
  }.merge(machine_options[:ssh_options] || {})
608
- result[:key_data] = [ private_key_for(machine_spec, server) ]
608
+ # Grab key_data from the user's config if not specified
609
+ unless result.has_key?(:key_data)
610
+ result[:keys_only] = true
611
+ result[:key_data] = [ private_key_for(machine_spec, machine_options, server) ]
612
+ end
609
613
  result
610
614
  end
611
615
 
@@ -47,7 +47,7 @@ module FogDriver
47
47
  port = machine_spec.location['winrm_port'] || 5985
48
48
  endpoint = "http://#{remote_host}:#{port}/wsman"
49
49
  type = :plaintext
50
- pem_bytes = private_key_for(machine_spec, server)
50
+ pem_bytes = private_key_for(machine_spec, machine_options, server)
51
51
  encrypted_admin_password = wait_for_admin_password(machine_spec)
52
52
  decoded = Base64.decode64(encrypted_admin_password)
53
53
  private_key = OpenSSL::PKey::RSA.new(pem_bytes)
@@ -335,7 +335,7 @@ module FogDriver
335
335
 
336
336
  if id && id != ''
337
337
  # AWS canonical URLs are of the form fog:AWS:
338
- if id =~ /^(\d{12})(:(.+))?$/
338
+ if id =~ /^(\d{12}|IAM)(:(.+))?$/
339
339
  if $2
340
340
  id = $1
341
341
  new_compute_options[:region] = $3
@@ -350,17 +350,22 @@ module FogDriver
350
350
  id = nil
351
351
  end
352
352
  end
353
-
354
- aws_profile = get_aws_profile(result[:driver_options], id)
355
- new_compute_options[:aws_access_key_id] = aws_profile[:aws_access_key_id]
356
- new_compute_options[:aws_secret_access_key] = aws_profile[:aws_secret_access_key]
357
- new_compute_options[:aws_session_token] = aws_profile[:aws_security_token]
358
- new_defaults[:driver_options][:compute_options][:region] = aws_profile[:region]
359
- new_defaults[:driver_options][:compute_options][:endpoint] = aws_profile[:ec2_endpoint]
360
-
361
- account_info = aws_account_info_for(result[:driver_options][:compute_options])
362
- new_config[:driver_options][:aws_account_info] = account_info
363
- id = "#{account_info[:aws_account_id]}:#{result[:driver_options][:compute_options][:region]}"
353
+ if id == 'IAM'
354
+ id = "IAM:#{result[:driver_options][:compute_options][:region]}"
355
+ new_config[:driver_options][:aws_account_info] = { aws_username: 'IAM' }
356
+ new_compute_options[:use_iam_profile] = true
357
+ else
358
+ aws_profile = get_aws_profile(result[:driver_options], id)
359
+ new_compute_options[:aws_access_key_id] = aws_profile[:aws_access_key_id]
360
+ new_compute_options[:aws_secret_access_key] = aws_profile[:aws_secret_access_key]
361
+ new_compute_options[:aws_session_token] = aws_profile[:aws_security_token]
362
+ new_defaults[:driver_options][:compute_options][:region] = aws_profile[:region]
363
+ new_defaults[:driver_options][:compute_options][:endpoint] = aws_profile[:ec2_endpoint]
364
+
365
+ account_info = aws_account_info_for(result[:driver_options][:compute_options])
366
+ new_config[:driver_options][:aws_account_info] = account_info
367
+ id = "#{account_info[:aws_account_id]}:#{result[:driver_options][:compute_options][:region]}"
368
+ end
364
369
 
365
370
  # Make sure we're using a reasonable default AMI, for now this is Ubuntu 14.04 LTS
366
371
  result[:machine_options][:bootstrap_options][:image_id] ||=
@@ -1,7 +1,7 @@
1
1
  class Chef
2
2
  module Provisioning
3
3
  module FogDriver
4
- VERSION = '0.11'
4
+ VERSION = '0.12'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-provisioning-fog
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.11'
4
+ version: '0.12'
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Keiser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-05 00:00:00.000000000 Z
11
+ date: 2015-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef
@@ -107,7 +107,6 @@ files:
107
107
  - Rakefile
108
108
  - lib/chef/provider/fog_key_pair.rb
109
109
  - lib/chef/provisioning/driver_init/fog.rb
110
- - lib/chef/provisioning/fog_driver.rb
111
110
  - lib/chef/provisioning/fog_driver/driver.rb
112
111
  - lib/chef/provisioning/fog_driver/providers/aws.rb
113
112
  - lib/chef/provisioning/fog_driver/providers/aws/credentials.rb
@@ -1 +0,0 @@
1
- require 'chef/provisioning/fog_driver/driver'