chef-provisioning-aws 1.10.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
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