kitchen-ec2 2.2.0 → 2.2.1

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: 28db84523fe129c18d97d7d4ce035e53018dae22
4
- data.tar.gz: e9614c002ae5569a2142b0778bc55672820ae2c8
3
+ metadata.gz: 863664a181278e965fac6bb54cf85b705b88e72c
4
+ data.tar.gz: c2245899fe742f202ebe555038931d8df7776452
5
5
  SHA512:
6
- metadata.gz: 4d6bb1cebdbf37961f07aab3e0b53f6397cf79f3f601889ddc8f82f478730e00099430258ff059c2ce34e9247f1a57da046b316672e987fa99c757e1da9310f8
7
- data.tar.gz: 42722c4235563507a4b30e2b4f28edb6b8fbe08c46e6a3203b90b576674e9c4b0ba7d678d7daa5ece7c5d58a13ac437f02916a3f277cd871e1246e97e4c24af9
6
+ metadata.gz: ad29d9a33374c23d585d1ddbefda2712005a5a5c57117a2e071fffdde98ccb7b43e84b409f6eef9e4c0e0a23620714633d2bab7d2782ce6b99cd595f8da1a2fd
7
+ data.tar.gz: 542e97cb2aa201bac249aca2b3cfe790e2a604acefdd916e7eac59beecb644ed167f164d6e8119ff4bd390c636ca218122581f3654e650455f65bada09607fc0
@@ -17,6 +17,5 @@ matrix:
17
17
  - rvm: ruby-head
18
18
  before_install:
19
19
  - gem update --system
20
-
21
- allow_failures:
20
+ allow_failures:
22
21
  - rvm: ruby-head
@@ -1,5 +1,14 @@
1
1
  # Change Log
2
2
 
3
+ ## [v2.2.1](https://github.com/test-kitchen/kitchen-ec2/tree/v2.2.1) (2018-02-12)
4
+ [Full Changelog](https://github.com/test-kitchen/kitchen-ec2/compare/v2.2.0...v2.2.1)
5
+
6
+ **Fixed bugs:**
7
+
8
+ - Fix `undefined` error when Windows AMIs don't include "windows" in name [\#322](https://github.com/test-kitchen/kitchen-ec2/issues/322) [\#324](https://github.com/test-kitchen/kitchen-ec2/pull/324) ([BenLiyanage](https://github.com/BenLiyanage))
9
+ - Fix error behavior when security\_group\_filter is set but no security group found for those tags [\#386](https://github.com/test-kitchen/kitchen-ec2/pull/386) ([dpattmann](https://github.com/dpattmann))
10
+ - Don't create security group if security\_group\_filter is set [\#385](https://github.com/test-kitchen/kitchen-ec2/pull/385) ([dpattmann](https://github.com/dpattmann))
11
+
3
12
  ## [v2.2.0](https://github.com/test-kitchen/kitchen-ec2/tree/v2.2.0) (2018-01-27)
4
13
 
5
14
  [Full Changelog](https://github.com/test-kitchen/kitchen-ec2/compare/v2.1.0...v2.2.0)
@@ -62,19 +62,21 @@ module Kitchen
62
62
  end
63
63
 
64
64
  if config[:security_group_ids].nil? && config[:security_group_filter]
65
- config[:security_group_ids] = [::Aws::EC2::Client.
66
- new(:region => config[:region]).describe_security_groups(
65
+ security_group = ::Aws::EC2::Client.
66
+ new(:region => config[:region]).describe_security_groups(
67
67
  :filters => [
68
- {
69
- :name => "tag:#{config[:security_group_filter][:tag]}",
70
- :values => [config[:security_group_filter][:value]],
71
- },
68
+ {
69
+ :name => "tag:#{config[:security_group_filter][:tag]}",
70
+ :values => [config[:security_group_filter][:value]],
71
+ },
72
72
  ]
73
- )[0][0].group_id]
73
+ )[0][0]
74
74
 
75
- if config[:security_group_ids].nil?
76
- raise "The group tagged '#{config[:security_group_filter][:tag]}\
77
- #{config[:security_group_filter][:value]}' does not exist!"
75
+ if security_group
76
+ config[:security_group_ids] = [security_group.group_id]
77
+ else
78
+ raise "The group tagged '#{config[:security_group_filter][:tag]} " +
79
+ "#{config[:security_group_filter][:value]}' does not exist!"
78
80
  end
79
81
  end
80
82
 
@@ -61,6 +61,7 @@ module Kitchen
61
61
  end
62
62
  default_config :ebs_optimized, false
63
63
  default_config :security_group_ids, nil
64
+ default_config :security_group_filter, nil
64
65
  default_config :tags, "created-by" => "test-kitchen"
65
66
  default_config :user_data do |driver|
66
67
  if driver.windows_os?
@@ -210,7 +211,7 @@ module Kitchen
210
211
  END
211
212
 
212
213
  # If no security group IDs are specified, create one automatically.
213
- unless config[:security_group_ids]
214
+ unless config[:security_group_ids] || config[:security_group_filter]
214
215
  create_security_group(state)
215
216
  config[:security_group_ids] = [state[:auto_security_group_id]]
216
217
  end
@@ -622,6 +623,36 @@ module Kitchen
622
623
  end
623
624
 
624
625
  def default_windows_user_data
626
+ base_script = Kitchen::Util.outdent!(<<-EOH)
627
+ $OSVersion = (get-itemproperty -Path "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion" -Name ProductName).ProductName
628
+ If($OSVersion.contains('2016'))
629
+ {
630
+ $logfile='C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Log\\kitchen-ec2.log'
631
+ # EC2Launch doesn't init extra disks by default
632
+ C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Scripts\\InitializeDisks.ps1
633
+ }
634
+ Else
635
+ {
636
+ $logfile='C:\\Program Files\\Amazon\\Ec2ConfigService\\Logs\\kitchen-ec2.log'
637
+ }
638
+ # Allow script execution
639
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
640
+ #PS Remoting and & winrm.cmd basic config
641
+ $enableArgs=@{Force=$true}
642
+ $command=Get-Command Enable-PSRemoting
643
+ if($command.Parameters.Keys -contains "skipnetworkprofilecheck"){
644
+ $enableArgs.skipnetworkprofilecheck=$true
645
+ }
646
+ Enable-PSRemoting @enableArgs
647
+ & winrm.cmd set winrm/config '@{MaxTimeoutms="1800000"}' >> $logfile
648
+ & winrm.cmd set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}' >> $logfile
649
+ & winrm.cmd set winrm/config/winrs '@{MaxShellsPerUser="50"}' >> $logfile
650
+ & winrm.cmd set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}' >> $logfile
651
+ #Firewall Config
652
+ & netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" profile=public protocol=tcp localport=5985 remoteip=localsubnet new remoteip=any >> $logfile
653
+ Set-ItemProperty -Name LocalAccountTokenFilterPolicy -Path HKLM:\\software\\Microsoft\\Windows\\CurrentVersion\\Policies\\system -Value 1
654
+ EOH
655
+
625
656
  # Preparing custom static admin user if we defined something other than Administrator
626
657
  custom_admin_script = ""
627
658
  if !(instance.transport[:username] =~ /administrator/i) && instance.transport[:password]
@@ -642,35 +673,10 @@ module Kitchen
642
673
  EOH
643
674
  end
644
675
 
645
- if actual_platform.version =~ /2016/
646
- logfile_name = 'C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Log\\kitchen-ec2.log'
647
- disk_init = 'C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Scripts\\InitializeDisks.ps1'
648
- else
649
- logfile_name = 'C:\\Program Files\\Amazon\\Ec2ConfigService\\Logs\\kitchen-ec2.log'
650
- disk_init = ""
651
- end
652
676
  # Returning the fully constructed PowerShell script to user_data
653
677
  Kitchen::Util.outdent!(<<-EOH)
654
678
  <powershell>
655
- $logfile="#{logfile_name}"
656
- # EC2Launch doesn't init extra disks by default
657
- #{disk_init}
658
- # Allow script execution
659
- Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
660
- #PS Remoting and & winrm.cmd basic config
661
- $enableArgs=@{Force=$true}
662
- $command=Get-Command Enable-PSRemoting
663
- if($command.Parameters.Keys -contains "skipnetworkprofilecheck"){
664
- $enableArgs.skipnetworkprofilecheck=$true
665
- }
666
- Enable-PSRemoting @enableArgs
667
- & winrm.cmd set winrm/config '@{MaxTimeoutms="1800000"}' >> $logfile
668
- & winrm.cmd set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}' >> $logfile
669
- & winrm.cmd set winrm/config/winrs '@{MaxShellsPerUser="50"}' >> $logfile
670
- & winrm.cmd set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}' >> $logfile
671
- #Firewall Config
672
- & netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" profile=public protocol=tcp localport=5985 remoteip=localsubnet new remoteip=any >> $logfile
673
- Set-ItemProperty -Name LocalAccountTokenFilterPolicy -Path HKLM:\\software\\Microsoft\\Windows\\CurrentVersion\\Policies\\system -Value 1
679
+ #{base_script}
674
680
  #{custom_admin_script}
675
681
  </powershell>
676
682
  EOH
@@ -764,6 +770,11 @@ module Kitchen
764
770
  Time.now.utc.iso8601,
765
771
  Array.new(8) { rand(36).to_s(36) }.join(""),
766
772
  ]
773
+ # In a perfect world this would generate the key locally and use ImportKey
774
+ # instead for better security, but given the use case that is very likely
775
+ # to rapidly exhaust local entropy by creating a lot of keys. So this is
776
+ # probably fine. If you want very high security, probably don't use this
777
+ # feature anyway.
767
778
  resp = ec2.client.create_key_pair(key_name: "kitchen-#{name_parts.join('-')}")
768
779
  state[:auto_key_id] = resp.key_name
769
780
  info("Created automatic key pair #{state[:auto_key_id]}")
@@ -22,6 +22,6 @@ module Kitchen
22
22
  module Driver
23
23
 
24
24
  # Version string for EC2 Test Kitchen driver
25
- EC2_VERSION = "2.2.0"
25
+ EC2_VERSION = "2.2.1"
26
26
  end
27
27
  end
@@ -212,6 +212,42 @@ describe Kitchen::Driver::Aws::InstanceGenerator do
212
212
  end
213
213
  end
214
214
 
215
+ context "when provided a non existing security_group tag filter" do
216
+ ec2_stub_whithout_security_group = Aws::EC2::Client.new(:stub_responses => true)
217
+
218
+ let(:config) do
219
+ {
220
+ :instance_type => "micro",
221
+ :ebs_optimized => true,
222
+ :image_id => "ami-123",
223
+ :aws_ssh_key_id => "key",
224
+ :subnet_id => "s-123",
225
+ :security_group_ids => nil,
226
+ :region => "us-west-2",
227
+ :security_group_filter =>
228
+ {
229
+ :tag => "foo",
230
+ :value => "bar",
231
+ },
232
+ }
233
+ end
234
+
235
+ it "generates id from the provided tag" do
236
+ allow(::Aws::EC2::Client).to receive(:new).and_return(ec2_stub_whithout_security_group)
237
+ expect(ec2_stub_whithout_security_group).to receive(:describe_security_groups).with(
238
+ :filters => [
239
+ {
240
+ :name => "tag:foo",
241
+ :values => ["bar"],
242
+ },
243
+ ]
244
+ ).and_return(ec2_stub_whithout_security_group.describe_security_groups)
245
+
246
+ expect { generator.ec2_instance_data }.to raise_error("The group tagged '#{config[:security_group_filter][:tag]} " +
247
+ "#{config[:security_group_filter][:value]}' does not exist!")
248
+ end
249
+ end
250
+
215
251
  context "when passed an empty block_device_mappings" do
216
252
  let(:config) do
217
253
  {
@@ -646,6 +646,18 @@ describe Kitchen::Driver::Ec2 do
646
646
  end
647
647
  end
648
648
 
649
+ context "with no security group but filter specified" do
650
+ before do
651
+ config.delete(:security_group_ids)
652
+ config[:security_group_filter] = { tag: "SomeTag", value: "SomeValue" }
653
+ expect(driver).not_to receive(:create_security_group)
654
+ expect(driver).to receive(:submit_server).and_return(server)
655
+ allow(instance).to receive(:name).and_return("instance_name")
656
+ end
657
+
658
+ include_examples "common create"
659
+ end
660
+
649
661
  context "with no key pair configured" do
650
662
  before do
651
663
  config[:kitchen_root] = "/kitchen"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-ec2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Nichol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-03 00:00:00.000000000 Z
11
+ date: 2018-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen