chef-provisioning-aws 1.10.0 → 1.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6942ab3aca17cfa681e5023c373ceca03447728
4
- data.tar.gz: 937b97d44672eb3c4aa85e2730211b09f03d218e
3
+ metadata.gz: b8a5c0aed646021b3eaf7a62862172f5c7fe2de7
4
+ data.tar.gz: 484a6c780d5194f447e1929a234a73343a0ac651
5
5
  SHA512:
6
- metadata.gz: 7a265b44bc28a8f62cc24c2d054cb4d1a9aec99b72c3a7f219f5e07498fb3e4923cdc3ffada912945df7968c5ba7f8a952de12255d764bd7da7abcda6d16467c
7
- data.tar.gz: 7bb902bc96c98c8116f033416ad68823f93265396deb41c43ff8cdea6787e88f7bfe9207216c025d2e204d78d89e7c3db329575c145298035f1a6c3d637d055f
6
+ metadata.gz: cbb4e40771fdac35dbbf3cca8a60a09f2f0860d57595fb8078111f6081c6a0dd64f08fa64a453442d242613f6b7d86a526cc9b1a5b678422a8785bd17cd05cbe
7
+ data.tar.gz: 8ea07beb763fc0997070a9b61e2d7c45e66a4977bf6800d253ef9c1a146199562083854a52a4982abb76a4a069878a7b693c7dcc7a41e48be64f680a6bfadcb1
@@ -340,8 +340,8 @@ module AWSDriver
340
340
  elsif ! server_certificate_eql?(listener.server_certificate,
341
341
  server_cert_from_spec(desired_listener))
342
342
  # Server certificate is mutable - if no immutable changes required a full recreate, update cert
343
- perform_action.call(" update server certificate from #{listener.server_certificate} to #{desired_listener[:server_certificate]}") do
344
- listener.server_certificate = desired_listener[:server_certificate]
343
+ perform_action.call(" update server certificate from #{listener.server_certificate} to #{server_cert_from_spec(desired_listener)}") do
344
+ listener.server_certificate = server_cert_from_spec(desired_listener)
345
345
  end
346
346
  end
347
347
 
@@ -356,7 +356,7 @@ module AWSDriver
356
356
  updates << " set protocol to #{listener[:protocol].inspect}"
357
357
  updates << " set instance port to #{listener[:instance_port].inspect}"
358
358
  updates << " set instance protocol to #{listener[:instance_protocol].inspect}"
359
- updates << " set server certificate to #{listener[:server_certificate]}" if listener[:server_certificate]
359
+ updates << " set server certificate to #{server_cert_from_spec(listener)}" if server_cert_from_spec(listener)
360
360
  perform_action.call(updates) do
361
361
  actual_elb.listeners.create(listener)
362
362
  end
@@ -1163,7 +1163,12 @@ EOD
1163
1163
 
1164
1164
  #Enable pty by default
1165
1165
  options[:ssh_pty_enable] = true
1166
- options[:ssh_gateway] = machine_spec.reference['ssh_gateway'] if machine_spec.reference.has_key?('ssh_gateway')
1166
+
1167
+ if machine_spec.reference.has_key?('ssh_gateway')
1168
+ options[:ssh_gateway] = machine_spec.reference['ssh_gateway']
1169
+ elsif machine_options[:ssh_gateway]
1170
+ options[:ssh_gateway] = machine_options[:ssh_gateway]
1171
+ end
1167
1172
 
1168
1173
  Chef::Provisioning::Transport::SSH.new(remote_host, username, ssh_options, options, config)
1169
1174
  end
@@ -1,7 +1,7 @@
1
1
  class Chef
2
2
  module Provisioning
3
3
  module AWSDriver
4
- VERSION = '1.10.0'
4
+ VERSION = '1.11.0'
5
5
  end
6
6
  end
7
7
  end
@@ -20,7 +20,7 @@ class Chef::Resource::AwsEbsVolume < Chef::Provisioning::AWSDriver::AWSResourceW
20
20
  attribute :device, kind_of: String
21
21
 
22
22
  attribute :volume_id, kind_of: String, aws_id_attribute: true, default: lazy {
23
- name =~ /^vol-[a-f0-9]{8}$/ ? name : nil
23
+ name =~ /^vol-(?:[a-f0-9]{8}|[a-f0-9]{17})$/ ? name : nil
24
24
  }
25
25
 
26
26
  def aws_object
@@ -126,7 +126,7 @@ class Chef::Provider::AwsRoute53HostedZone < Chef::Provisioning::AWSDriver::AWSP
126
126
  if record_set_resources
127
127
  populate_zone_info(record_set_resources, zone)
128
128
 
129
- change_list = record_set_resources.map { |rs| rs.to_aws_change_struct(CREATE) }
129
+ change_list = record_set_resources.map { |rs| rs.to_aws_change_struct(UPDATE) }
130
130
 
131
131
  new_resource.driver.route53_client.change_resource_record_sets(hosted_zone_id: new_resource.aws_route53_zone_id,
132
132
  change_batch: {
@@ -80,10 +80,11 @@ class Chef::Resource::AwsRoute53RecordSet < Chef::Provisioning::AWSDriver::Super
80
80
  raise(::Chef::Exceptions::ValidationFailed,
81
81
  "CNAME records may only have a single value (a hostname).")
82
82
 
83
- when "TXT", "PTR", "AAAA", "SPF"
83
+
84
+ when "SOA", "NS", "TXT", "PTR", "AAAA", "SPF"
84
85
  true
85
86
  else
86
- raise ArgumentError, "Argument '#{type}' must be one of #{%w(A MX SRV CNAME TXT PTR AAAA SPF)}"
87
+ raise ArgumentError, "Argument '#{type}' must be one of #{%w(SOA NS A MX SRV CNAME TXT PTR AAAA SPF)}"
87
88
  end
88
89
  end
89
90
 
@@ -76,7 +76,7 @@ class Chef::Resource::AwsSubnet < Chef::Provisioning::AWSDriver::AWSResourceWith
76
76
  #
77
77
  # By default, an implicit association with the main route table is made (`:default_to_main`)
78
78
  #
79
- attribute :route_table#, kind_of: [ String, AwsRouteTable, AWS::EC2::RouteTable ], equal_to: [ :default_to_main ]
79
+ attribute :route_table#, kind_of: [ String, AwsRouteTable, ::Aws::EC2::RouteTable ], equal_to: [ :default_to_main ]
80
80
 
81
81
  #
82
82
  # The Network ACL to associate with this subnet. Subnets may only
@@ -79,7 +79,7 @@ class Chef::Resource::AwsVpc < Chef::Provisioning::AWSDriver::AWSResourceWithEnt
79
79
  # - An actual `aws_route_table` resource.
80
80
  # - An AWS `route_table` object.
81
81
  #
82
- attribute :main_route_table, kind_of: [ String, AwsRouteTable, AWS::EC2::RouteTable ]
82
+ attribute :main_route_table, kind_of: [ String, AwsRouteTable, ::Aws::EC2::RouteTable ]
83
83
 
84
84
  #
85
85
  # The routes for the main route table.
@@ -384,6 +384,17 @@ describe Chef::Resource::AwsRoute53HostedZone do
384
384
  resource_records: [{ value: "10 50 8889 chef-server.example.com" },
385
385
  { value: "20 70 80 narf.net" }],
386
386
  },
387
+ soa: {
388
+ name: "feegle.com.",
389
+ type: "SOA",
390
+ resource_records: [{ value: "ns-1641.awsdns-13.co.uk. awsdns-hostmaster.amazon.com. 2 7200 900 1209600 86400"}],
391
+ },
392
+ ns: {
393
+ name: "feegle.com.",
394
+ type: "NS",
395
+ resource_records: [{ value: "ns1.amazon.com." },
396
+ { value: "ns2.amazon.org." }],
397
+ },
387
398
  }}
388
399
 
389
400
  it "handles CNAME records" do
@@ -482,6 +493,38 @@ describe Chef::Resource::AwsRoute53HostedZone do
482
493
  }.to raise_error(Chef::Exceptions::ValidationFailed, /MX records must have a priority and mail server/)
483
494
  end
484
495
 
496
+ it "handles SOA records" do
497
+ expect_recipe {
498
+ aws_route53_hosted_zone "feegle.com" do
499
+ record_sets {
500
+ aws_route53_record_set "SOA-host" do
501
+ rr_name "feegle.com."
502
+ type "SOA"
503
+ ttl 300
504
+ resource_records ["ns-1641.awsdns-13.co.uk. awsdns-hostmaster.amazon.com. 2 7200 900 1209600 86400"]
505
+ end
506
+ }
507
+ end
508
+ }.to create_an_aws_route53_hosted_zone("feegle.com",
509
+ resource_record_sets: [ {}, expected[:soa] ]).and be_idempotent
510
+ end
511
+
512
+ it "handles NS records" do
513
+ expect_recipe {
514
+ aws_route53_hosted_zone "feegle.com" do
515
+ record_sets {
516
+ aws_route53_record_set "NS-host" do
517
+ rr_name "feegle.com."
518
+ type "NS"
519
+ ttl 300
520
+ resource_records %w[ns1.amazon.com. ns2.amazon.org.]
521
+ end
522
+ }
523
+ end
524
+ }.to create_an_aws_route53_hosted_zone("feegle.com",
525
+ resource_record_sets: [ expected[:ns], {} ]).and be_idempotent
526
+ end
527
+
485
528
  # we don't validate TXT values:
486
529
  # http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#TXTFormat
487
530
  it "handles TXT records" do
@@ -16,7 +16,7 @@ describe Chef::Resource::LoadBalancer do
16
16
  recursive_delete true
17
17
  end
18
18
 
19
- cert_string = "-----BEGIN CERTIFICATE-----\nMIIDejCCAmICCQCpupMy/LKfLTANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJV\nUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHU2VhdHRsZTENMAsGA1UE\nChMEQ2hlZjEMMAoGA1UECxMDRGV2MQ4wDAYDVQQDEwVUeWxlcjEcMBoGCSqGSIb3\nDQEJARYNdHlsZXJAY2hlZi5pbzAeFw0xNTA4MDQwMDI1NDFaFw0xNjA4MDMwMDI1\nNDFaMH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH\nEwdTZWF0dGxlMQ0wCwYDVQQKEwRDaGVmMQwwCgYDVQQLEwNEZXYxDjAMBgNVBAMT\nBVR5bGVyMRwwGgYJKoZIhvcNAQkBFg10eWxlckBjaGVmLmlvMIIBIjANBgkqhkiG\n9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz4gFxNSzwwwYrYTTOCNVQL/agpIXmQKKtkE7\n+Up+waOdSR2iZvgc4fowAqQQ5dtVtur6LEA2LDlLILE+7MhlBxPc3V99lhi5p/Pv\neGCPI7k9sYT0iPJwiqvW+/nCo93QoNpUUDgb6WpT/RENFESn99nTE5NjxNx560aq\nSxAPHTogJEz3wC8c6mQQoANOuXzNb41wvOCUI7Tku76AQ9uECFUjtYpXpx8komaY\nAPtwzr87LGdSysE75roagews2MzAJgGG16oUBsJzT45MlIyQorN3AjoZ3fze6kop\nOhAWeYUM61rwTq7JtLXtBG/9yJzTd/eWU8c4cSK8zePx48X9TQIDAQABMA0GCSqG\nSIb3DQEBBQUAA4IBAQBXJQSpDkjxyljnSWjBur4XikLlFuEpdAdu0MILM3GnS3rT\ntoCVPG2U1d+KkhYG0Y9TBxHpK+3lDGYNyFYJN0STzL4cFzMgQlmZKFhVi/YJWKYO\nj9baIB3dy2k8b2XdDe3WxyycQpHjHhFPqpOTMGNV/1PwJNZGQEjc/svr8EalxvZB\neMb3Kk94K7yohvhT+Ze//rr4ArlM1zvEv3QMwSuyJBA2gtH7FgFKWohZnubW+3uc\n9W/Ux/3O1+BKDWp6zyqn/b2SSF51Jt3tSCF+hIMKYeJnJojY/AF9tQ+DtE8EKYRD\n/qzXX2MQLbhm1AzLt4PN63r96ADYlHhOJGNa9ocS\n-----END CERTIFICATE-----"
19
+ cert_string = "-----BEGIN CERTIFICATE-----\nMIIDlDCCAnygAwIBAgIJAOR3PCV+XjkpMA0GCSqGSIb3DQEBBQUAMDoxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRYwFAYDVQQKEw1DaGVmIFNvZnR3\nYXJlMB4XDTE2MDgwMzE2MTUwNVoXDTQzMTIyMDE2MTUwNVowOjELMAkGA1UEBhMC\nVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxFjAUBgNVBAoTDUNoZWYgU29mdHdhcmUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPiAXE1LPDDBithNM4I1VA\nv9qCkheZAoq2QTv5Sn7Bo51JHaJm+Bzh+jACpBDl21W26vosQDYsOUsgsT7syGUH\nE9zdX32WGLmn8+94YI8juT2xhPSI8nCKq9b7+cKj3dCg2lRQOBvpalP9EQ0URKf3\n2dMTk2PE3HnrRqpLEA8dOiAkTPfALxzqZBCgA065fM1vjXC84JQjtOS7voBD24QI\nVSO1ilenHySiZpgA+3DOvzssZ1LKwTvmuhqB7CzYzMAmAYbXqhQGwnNPjkyUjJCi\ns3cCOhnd/N7qSik6EBZ5hQzrWvBOrsm0te0Eb/3InNN395ZTxzhxIrzN4/Hjxf1N\nAgMBAAGjgZwwgZkwHQYDVR0OBBYEFOxyNX8IT5AqXXIlIx49yxf/IYLOMGoGA1Ud\nIwRjMGGAFOxyNX8IT5AqXXIlIx49yxf/IYLOoT6kPDA6MQswCQYDVQQGEwJVUzET\nMBEGA1UECBMKU29tZS1TdGF0ZTEWMBQGA1UEChMNQ2hlZiBTb2Z0d2FyZYIJAOR3\nPCV+XjkpMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBALagR0Da4UgO\nQap+dbZV6w/xsGuDE8nmb+nT40e5t06H1dlJtqv1KQiZvTE2F4qdb3gNTLriST5d\nIBgb9NvfVwkUx5J/PNJPwGkLGLgPk7SdGZeIht081wm/OQ/EcadAx8hI778AR877\ng6ni7QG+uJsIsuAnsTWC7T+/QNkVp0WvPw2CWPgmWm5Hg4zK6KUMQ5zKi91mMkzv\nclUpgp1qdQOwbS9tDygz5MBsThdsxKZ90I8AxDsPNGFxDZJg9Dj2IvETC3pVvGlh\nMlr7hdYITWdCEPEntDKPA4OOqpJhcfxGbN+Ze/XhpYbqOG9aPYU6w4oqcmjinf+j\nySQz2RMQ9To=\n-----END CERTIFICATE-----"
20
20
  private_key_string = "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAz4gFxNSzwwwYrYTTOCNVQL/agpIXmQKKtkE7+Up+waOdSR2i\nZvgc4fowAqQQ5dtVtur6LEA2LDlLILE+7MhlBxPc3V99lhi5p/PveGCPI7k9sYT0\niPJwiqvW+/nCo93QoNpUUDgb6WpT/RENFESn99nTE5NjxNx560aqSxAPHTogJEz3\nwC8c6mQQoANOuXzNb41wvOCUI7Tku76AQ9uECFUjtYpXpx8komaYAPtwzr87LGdS\nysE75roagews2MzAJgGG16oUBsJzT45MlIyQorN3AjoZ3fze6kopOhAWeYUM61rw\nTq7JtLXtBG/9yJzTd/eWU8c4cSK8zePx48X9TQIDAQABAoIBAA8teoaHq9Hy+4cN\nNMlhRCXlIhz0hEdLeUuU/8benOCaj7E+OpdfQ/V+763xw86buOwUyVEdLRkU45qz\ne8+jZEgdOsTx6+RjUIio/XWHUlChhpKKD7xIRtTNdn6dKJAFc/GfphTr1Za/kP7s\nFVHLJ6Gny5kd6WkHWt9LHr84oHJZoSjR6YDYdSTL+NtVTwqsKj4EfNY8JAPJI/xI\n9A9t57pvXzwdiya/vXPGytgwkHC/HHWp2sgFvKtJUzuGH0ETDlys9mvXoVQeZ0d9\njhzwIwWAoyvTY9FsUBTCD0aO8r2ylsDVIo2b2cEAZ0Z77OGMUt4sock88sDIICnO\nZVjhV50CgYEA8hKTHpI5ENFvYrTckrc+PnPw7B7xHCCB84ut/CiwzawYRjUx/mtm\nCYYR1xAXdEFrBC21i4Ri8LAIrAQiFGydg2oh4ZQcnEMGKZ0F2VXlsidVNN2tW/50\n8kEaPHPVeP6Trt2kPtpQnhDcuQXbPmOgPBIY2j6nu/Go25e8eICkfhsCgYEA23iy\n8Og1SWZlV5b3ZFyolZiZ9kp0cwyXUGWxUZyw33gBmK6BFkscflI1vfNutxnTDjNl\nALLRoAeIApvXTMFOMUPJsDk90pO7rdlfLznU27lKPyCDkvDGmjCvGGDXrnvi+cc3\ngB3ERfrLJCMoMk9lyg7/KEzzsIjvtTRO79atCLcCgYAGT/+wI2YDj0KVU1wRI2An\nJsTYk3H8Jsjcvf66faEmq98yLX7xQIG3q9xZPF0wNeiBgmOikMA3wI9pVO5ClBaD\nb8gUZtVcKc9GVIbrhPbpb2ckasdzh64rBxGVE/w0HIdjXvpCfVTu2ke3N3ThKp3q\nExq8zjd3ijS6DTnn9orTkwKBgQCxVwpgl4HXWaIx8I7ezfB7UN+3n9oQzO/HyyRI\n6fAR4oqHsRolxXO0rwE2B+pCkd907hqDQfsY8Hz6fqquHtTsAfaLKvXFnhJdG/RJ\n2NUi5soT0FYA+gXAue4CKN6e4wQ5CLzUDTl3wns7LB1i6b06VHvhOK0AzOXE6guO\nyUzwaQKBgDCrGz6IrxEUWl6C14xNNRZBvYTY9oCQpUnup1gMxATJZm4KelKvtKz2\nU1MXpc1i395e+E+tjNAQg0JcBmwkHOMl8c/oAESWPxi11ezalGtUXjIgjBkqqNUE\n/uFqRpNFGwI09JolIqhBTgPWFq6MuuPDJ9IIGJZDQoGEBKmu0k2r\n-----END RSA PRIVATE KEY-----"
21
21
 
22
22
  aws_server_certificate "load_balancer_cert" do
@@ -24,6 +24,11 @@ describe Chef::Resource::LoadBalancer do
24
24
  private_key private_key_string
25
25
  end
26
26
 
27
+ aws_server_certificate "load_balancer_cert_2" do
28
+ certificate_body cert_string
29
+ private_key private_key_string
30
+ end
31
+
27
32
  it "creates a load_balancer with the maximum attributes" do
28
33
  expect_recipe {
29
34
  load_balancer 'test-load-balancer' do
@@ -173,6 +178,13 @@ describe Chef::Resource::LoadBalancer do
173
178
  :protocol => :http,
174
179
  :instance_port => 80,
175
180
  :instance_protocol => :http,
181
+ },
182
+ {
183
+ :port => 8443,
184
+ :protocol => :https,
185
+ :instance_port => 80,
186
+ :instance_protocol => :http,
187
+ :ssl_certificate_id => load_balancer_cert.aws_object.arn
176
188
  }],
177
189
  subnets: ["test_public_subnet"],
178
190
  security_groups: ["test_security_group"],
@@ -219,6 +231,13 @@ describe Chef::Resource::LoadBalancer do
219
231
  :instance_port => 8080,
220
232
  :instance_protocol => :http,
221
233
  :ssl_certificate_id => load_balancer_cert.aws_object.arn
234
+ },
235
+ {
236
+ :port => 8443,
237
+ :protocol => :https,
238
+ :instance_port => 80,
239
+ :instance_protocol => :http,
240
+ :ssl_certificate_id => load_balancer_cert_2.aws_object.arn
222
241
  }],
223
242
  subnets: ["test_public_subnet2"],
224
243
  security_groups: ["test_security_group2"],
@@ -262,6 +281,13 @@ describe Chef::Resource::LoadBalancer do
262
281
  :instance_port => 8080,
263
282
  :instance_protocol => :http,
264
283
  :server_certificate => {arn: load_balancer_cert.aws_object.arn}
284
+ },
285
+ {
286
+ :port => 8443,
287
+ :protocol => :https,
288
+ :instance_port => 80,
289
+ :instance_protocol => :http,
290
+ :server_certificate => {arn: load_balancer_cert_2.aws_object.arn}
265
291
  }],
266
292
  subnets: [test_public_subnet2.aws_object],
267
293
  security_groups: [test_security_group2.aws_object],
@@ -53,6 +53,33 @@ describe Chef::Resource::Machine do
53
53
  # The non-idempotence is that it runs chef again, not that it unecessarily modifies the aws_object
54
54
  end
55
55
 
56
+ it "successfully converges a machine with custom ssh options", :super_slow do
57
+ expect_recipe {
58
+ machine 'test_machine' do
59
+ machine_options bootstrap_options: {
60
+ subnet_id: 'test_public_subnet',
61
+ key_name: 'test_key_pair'
62
+ },
63
+ ssh_username: "ubuntu", # Username to use for ssh and WinRM
64
+ ssh_options: { # a list of options to Net::SSH.start
65
+ :auth_methods => [ 'publickey' ], # DEFAULT
66
+ :keys_only => true, # DEFAULT
67
+ :forward_agent => true, # you may want your ssh-agent to be available on your provisioned machines
68
+ :remote_forwards => [
69
+ # Give remote host access to private git server
70
+ {:remote_port => 2222, :local_host => 'git.example.com', :local_port => 22,},
71
+ ],
72
+ # You can send net-ssh log info to the Chef::Log if you are having
73
+ # trouble with ssh.
74
+ :logger => Chef::Log,
75
+ }
76
+ end
77
+ }.to create_an_aws_instance('test_machine'
78
+ )#.and be_idempotent
79
+ # Bug - machine resource with :converge action isn't idempotent
80
+ # The non-idempotence is that it runs chef again, not that it unecessarily modifies the aws_object
81
+ end
82
+
56
83
  it "machine with source_dest_check false creates a machine with no source dest check", :super_slow do
57
84
  expect_recipe {
58
85
  machine 'test_machine' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-provisioning-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.0
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Ewart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-16 00:00:00.000000000 Z
11
+ date: 2016-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-provisioning