kitchen-ec2 3.7.0 → 3.10.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 +4 -4
- data/lib/kitchen/driver/aws/client.rb +0 -1
- data/lib/kitchen/driver/aws/instance_generator.rb +4 -5
- data/lib/kitchen/driver/aws/standard_platform.rb +2 -2
- data/lib/kitchen/driver/aws/standard_platform/amazon.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/amazon2.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/centos.rb +26 -3
- data/lib/kitchen/driver/aws/standard_platform/debian.rb +3 -3
- data/lib/kitchen/driver/aws/standard_platform/fedora.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/freebsd.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/rhel.rb +8 -1
- data/lib/kitchen/driver/aws/standard_platform/ubuntu.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/windows.rb +1 -1
- data/lib/kitchen/driver/ec2.rb +81 -34
- data/lib/kitchen/driver/ec2_version.rb +1 -2
- metadata +6 -132
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b5acaa7d4d497244e97e35e4d8c44f1b0a8771100dfb0ef01cae937a7904a853
|
|
4
|
+
data.tar.gz: 92a4bb2ffeb6c84295fc6432e0c0852e63e11f1a4cbea7ae4fad54888ad9869e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fb7fc3f4d93a893455e274f0744c510526a79c2bd997bf6ef712f9e7774ab13a077b2c038402d7c41eaf8610f7b0bff9abeddddc5633b36c2e1142bfe72c4779
|
|
7
|
+
data.tar.gz: 44f07e5fb729c8fd106e3df0030a7d267322ebd80220f19f115e2f8addc6148a1ebd5c2da05bb4e5f84867c74b1889a4131881183f8f89ed5f67bde776e7ac7d
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
1
|
#
|
|
3
2
|
# Author:: Tyler Ball (<tball@chef.io>)
|
|
4
3
|
#
|
|
@@ -17,7 +16,7 @@
|
|
|
17
16
|
# See the License for the specific language governing permissions and
|
|
18
17
|
# limitations under the License.
|
|
19
18
|
|
|
20
|
-
require "base64"
|
|
19
|
+
require "base64" unless defined?(Base64)
|
|
21
20
|
require "aws-sdk-ec2"
|
|
22
21
|
|
|
23
22
|
module Kitchen
|
|
@@ -59,7 +58,7 @@ module Kitchen
|
|
|
59
58
|
raise "The subnet tagged '#{config[:subnet_filter][:tag]}:#{config[:subnet_filter][:value]}' does not exist!" unless subnets.any?
|
|
60
59
|
|
|
61
60
|
# => Select the least-populated subnet if we have multiple matches
|
|
62
|
-
subnet = subnets.
|
|
61
|
+
subnet = subnets.max_by { |s| s[:available_ip_address_count] }
|
|
63
62
|
vpc_id = subnet.vpc_id
|
|
64
63
|
config[:subnet_id] = subnet.subnet_id
|
|
65
64
|
end
|
|
@@ -133,7 +132,7 @@ module Kitchen
|
|
|
133
132
|
|
|
134
133
|
availability_zone = config[:availability_zone]
|
|
135
134
|
if availability_zone
|
|
136
|
-
if
|
|
135
|
+
if /^[a-z]$/i.match?(availability_zone)
|
|
137
136
|
availability_zone = "#{config[:region]}#{availability_zone}"
|
|
138
137
|
end
|
|
139
138
|
i[:placement] = { availability_zone: availability_zone.downcase }
|
|
@@ -176,7 +175,7 @@ module Kitchen
|
|
|
176
175
|
end
|
|
177
176
|
availability_zone = config[:availability_zone]
|
|
178
177
|
if availability_zone
|
|
179
|
-
if
|
|
178
|
+
if /^[a-z]$/i.match?(availability_zone)
|
|
180
179
|
availability_zone = "#{config[:region]}#{availability_zone}"
|
|
181
180
|
end
|
|
182
181
|
i[:placement] = { availability_zone: availability_zone.downcase }
|
|
@@ -210,10 +210,10 @@ module Kitchen
|
|
|
210
210
|
images = images.sort_by(&:creation_date).reverse
|
|
211
211
|
# P5: We prefer x86_64 over i386 (if available)
|
|
212
212
|
images = prefer(images) { |image| image.architecture == "x86_64" }
|
|
213
|
-
# P4: We prefer
|
|
213
|
+
# P4: We prefer (SSD) (if available)
|
|
214
214
|
images = prefer(images) do |image|
|
|
215
215
|
image.block_device_mappings.any? do |b|
|
|
216
|
-
b.device_name == image.root_device_name && b.ebs && b.ebs.volume_type ==
|
|
216
|
+
b.device_name == image.root_device_name && b.ebs && %w{gp3 gp2}.any? { |t| b.ebs.volume_type == t }
|
|
217
217
|
end
|
|
218
218
|
end
|
|
219
219
|
# P3: We prefer ebs over instance_store (if available)
|
|
@@ -23,6 +23,14 @@ module Kitchen
|
|
|
23
23
|
class Centos < StandardPlatform
|
|
24
24
|
StandardPlatform.platforms["centos"] = self
|
|
25
25
|
|
|
26
|
+
CENTOS_OWNER_ID = "125523088429".freeze
|
|
27
|
+
PRODUCT_CODES = {
|
|
28
|
+
"6" => "6x5jmcajty9edm3f211pqjfn2",
|
|
29
|
+
"7" => "aw0evgkw8e5c1q413zgy5pjce",
|
|
30
|
+
# It appears that v8 is not published to the
|
|
31
|
+
# AWS marketplace and hence does not have a product code
|
|
32
|
+
}.freeze
|
|
33
|
+
|
|
26
34
|
# default username for this platform's ami
|
|
27
35
|
# @return [String]
|
|
28
36
|
def username
|
|
@@ -34,10 +42,25 @@ module Kitchen
|
|
|
34
42
|
end
|
|
35
43
|
|
|
36
44
|
def image_search
|
|
45
|
+
# Version 8+ are published directly, not to the AWS marketplace. Use OWNER ID.
|
|
37
46
|
search = {
|
|
38
|
-
"owner-
|
|
39
|
-
"name" => ["CentOS
|
|
47
|
+
"owner-id" => CENTOS_OWNER_ID,
|
|
48
|
+
"name" => ["CentOS #{version}*", "CentOS-#{version}*-GA-*"],
|
|
40
49
|
}
|
|
50
|
+
|
|
51
|
+
if version && version.split(".").first.to_i < 8
|
|
52
|
+
# Versions <8 are published to the AWS marketplace and use a different naming convention
|
|
53
|
+
search = {
|
|
54
|
+
"owner-alias" => "aws-marketplace",
|
|
55
|
+
"name" => ["CentOS Linux #{version}*", "CentOS-#{version}*-GA-*"],
|
|
56
|
+
}
|
|
57
|
+
# For versions published to aws-marketplace, additionally filter on product code to
|
|
58
|
+
# avoid non-official AMIs. Can't use CentOS owner ID here, as the owner ID is that of aws marketplace.
|
|
59
|
+
# https://github.com/test-kitchen/kitchen-ec2/issues/456
|
|
60
|
+
PRODUCT_CODES.keys.each do |major_version|
|
|
61
|
+
search["product-code"] = PRODUCT_CODES[major_version] if version.start_with?(major_version)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
41
64
|
search["architecture"] = architecture if architecture
|
|
42
65
|
search
|
|
43
66
|
end
|
|
@@ -52,7 +75,7 @@ module Kitchen
|
|
|
52
75
|
end
|
|
53
76
|
|
|
54
77
|
def self.from_image(driver, image)
|
|
55
|
-
if
|
|
78
|
+
if /centos/i.match?(image.name)
|
|
56
79
|
image.name =~ /\b(\d+(\.\d+)?)\b/i
|
|
57
80
|
new(driver, "centos", (Regexp.last_match || [])[1], image.architecture)
|
|
58
81
|
end
|
|
@@ -23,8 +23,8 @@ module Kitchen
|
|
|
23
23
|
class Debian < StandardPlatform
|
|
24
24
|
StandardPlatform.platforms["debian"] = self
|
|
25
25
|
|
|
26
|
-
#
|
|
27
|
-
# and
|
|
26
|
+
# 11/12 are listed last since we default to the first item in the hash
|
|
27
|
+
# and 11/12 are not released yet. When they're released move them up
|
|
28
28
|
DEBIAN_CODENAMES = {
|
|
29
29
|
10 => "buster",
|
|
30
30
|
9 => "stretch",
|
|
@@ -60,7 +60,7 @@ module Kitchen
|
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def self.from_image(driver, image)
|
|
63
|
-
if
|
|
63
|
+
if /debian/i.match?(image.name)
|
|
64
64
|
image.name =~ /\b(\d+|#{DEBIAN_CODENAMES.values.join("|")})\b/i
|
|
65
65
|
version = (Regexp.last_match || [])[1]
|
|
66
66
|
if version && version.to_i == 0
|
|
@@ -45,11 +45,18 @@ module Kitchen
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def self.from_image(driver, image)
|
|
48
|
-
if
|
|
48
|
+
if /rhel/i.match?(image.name)
|
|
49
49
|
image.name =~ /\b(\d+(\.\d+)?)/i
|
|
50
50
|
new(driver, "rhel", (Regexp.last_match || [])[1], image.architecture)
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
|
+
|
|
54
|
+
def sort_by_version(images)
|
|
55
|
+
# First do a normal version sort
|
|
56
|
+
super(images)
|
|
57
|
+
# Now sort again, shunning Beta releases.
|
|
58
|
+
prefer(images) { |image| !image.name.match(/_Beta-/i) }
|
|
59
|
+
end
|
|
53
60
|
end
|
|
54
61
|
end
|
|
55
62
|
end
|
|
@@ -70,7 +70,7 @@ module Kitchen
|
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
def self.from_image(driver, image)
|
|
73
|
-
if
|
|
73
|
+
if /Windows/i.match?(image.name)
|
|
74
74
|
# 2008 R2 SP2
|
|
75
75
|
if image.name =~ /(\b\d+)\W*(r\d+)?/i
|
|
76
76
|
major, revision = (Regexp.last_match || [])[1], (Regexp.last_match || [])[2]
|
data/lib/kitchen/driver/ec2.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
1
|
#
|
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
3
|
#
|
|
@@ -17,8 +16,8 @@
|
|
|
17
16
|
# See the License for the specific language governing permissions and
|
|
18
17
|
# limitations under the License.
|
|
19
18
|
|
|
20
|
-
require "benchmark"
|
|
21
|
-
require "json"
|
|
19
|
+
require "benchmark" unless defined?(Benchmark)
|
|
20
|
+
require "json" unless defined?(JSON)
|
|
22
21
|
require "kitchen"
|
|
23
22
|
require_relative "ec2_version"
|
|
24
23
|
require_relative "aws/client"
|
|
@@ -35,10 +34,10 @@ require_relative "aws/standard_platform/ubuntu"
|
|
|
35
34
|
require_relative "aws/standard_platform/windows"
|
|
36
35
|
require "aws-sdk-ec2"
|
|
37
36
|
require "aws-sdk-core/waiters/errors"
|
|
38
|
-
require "retryable"
|
|
39
|
-
require "time"
|
|
40
|
-
require "etc"
|
|
41
|
-
require "socket"
|
|
37
|
+
require "retryable" unless defined?(Retryable)
|
|
38
|
+
require "time" unless defined?(Time)
|
|
39
|
+
require "etc" unless defined?(Etc)
|
|
40
|
+
require "socket" unless defined?(Socket)
|
|
42
41
|
|
|
43
42
|
module Kitchen
|
|
44
43
|
|
|
@@ -57,7 +56,8 @@ module Kitchen
|
|
|
57
56
|
default_config :shared_credentials_profile, ENV["AWS_PROFILE"]
|
|
58
57
|
default_config :availability_zone, nil
|
|
59
58
|
default_config :instance_type, &:default_instance_type
|
|
60
|
-
default_config :ebs_optimized,
|
|
59
|
+
default_config :ebs_optimized, false
|
|
60
|
+
default_config :delete_on_termination, true
|
|
61
61
|
default_config :security_group_ids, nil
|
|
62
62
|
default_config :security_group_filter, nil
|
|
63
63
|
default_config :security_group_cidr_ip, "0.0.0.0/0"
|
|
@@ -261,13 +261,14 @@ module Kitchen
|
|
|
261
261
|
|
|
262
262
|
info("EC2 instance <#{state[:server_id]}> ready (hostname: #{state[:hostname]}).")
|
|
263
263
|
instance.transport.connection(state).wait_until_ready
|
|
264
|
-
|
|
264
|
+
attach_network_interface(state) unless config[:elastic_network_interface_id].nil?
|
|
265
|
+
create_ec2_json(state) if /chef/i.match?(instance.provisioner.name)
|
|
265
266
|
debug("ec2:create '#{state[:hostname]}'")
|
|
266
|
-
rescue Exception
|
|
267
|
+
rescue Exception => e
|
|
267
268
|
# Clean up any auto-created security groups or keys on the way out.
|
|
268
269
|
delete_security_group(state)
|
|
269
270
|
delete_key(state)
|
|
270
|
-
raise
|
|
271
|
+
raise "#{e.message} in the specified region #{config[:region]}. Please check this AMI is available in this region."
|
|
271
272
|
end
|
|
272
273
|
|
|
273
274
|
def destroy(state)
|
|
@@ -319,17 +320,14 @@ module Kitchen
|
|
|
319
320
|
end
|
|
320
321
|
|
|
321
322
|
def default_instance_type
|
|
322
|
-
@instance_type ||=
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
"t1.micro"
|
|
331
|
-
end
|
|
332
|
-
end
|
|
323
|
+
@instance_type ||= if image && image.virtualization_type == "hvm"
|
|
324
|
+
info("instance_type not specified. Using free tier t2.micro instance ...")
|
|
325
|
+
"t2.micro"
|
|
326
|
+
else
|
|
327
|
+
info("instance_type not specified. Using free tier t1.micro instance since" \
|
|
328
|
+
" image is paravirtual (pick an hvm image to use the superior t2.micro!) ...")
|
|
329
|
+
"t1.micro"
|
|
330
|
+
end
|
|
333
331
|
end
|
|
334
332
|
|
|
335
333
|
# The actual platform is the platform detected from the image
|
|
@@ -424,7 +422,31 @@ module Kitchen
|
|
|
424
422
|
def submit_spots
|
|
425
423
|
configs = [config]
|
|
426
424
|
expanded = []
|
|
427
|
-
keys = %i{instance_type
|
|
425
|
+
keys = %i{instance_type}
|
|
426
|
+
|
|
427
|
+
unless config[:subnet_filter]
|
|
428
|
+
# => Use explicitly specified subnets
|
|
429
|
+
keys << :subnet_id
|
|
430
|
+
else
|
|
431
|
+
# => Enable cascading through matching subnets
|
|
432
|
+
client = ::Aws::EC2::Client.new(region: config[:region])
|
|
433
|
+
subnets = client.describe_subnets(
|
|
434
|
+
filters: [
|
|
435
|
+
{
|
|
436
|
+
name: "tag:#{config[:subnet_filter][:tag]}",
|
|
437
|
+
values: [config[:subnet_filter][:value]],
|
|
438
|
+
},
|
|
439
|
+
]
|
|
440
|
+
).subnets
|
|
441
|
+
raise "A subnet matching '#{config[:subnet_filter][:tag]}:#{config[:subnet_filter][:value]}' does not exist!" unless subnets.any?
|
|
442
|
+
|
|
443
|
+
configs = subnets.map do |subnet|
|
|
444
|
+
new_config = config.clone
|
|
445
|
+
new_config[:subnet_id] = subnet.subnet_id
|
|
446
|
+
new_config[:subnet_filter] = nil
|
|
447
|
+
new_config
|
|
448
|
+
end
|
|
449
|
+
end
|
|
428
450
|
|
|
429
451
|
keys.each do |key|
|
|
430
452
|
configs.each do |conf|
|
|
@@ -436,12 +458,10 @@ module Kitchen
|
|
|
436
458
|
|
|
437
459
|
errs = []
|
|
438
460
|
configs.each do |conf|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
errs.append(e)
|
|
444
|
-
end
|
|
461
|
+
@config = conf
|
|
462
|
+
return submit_spot
|
|
463
|
+
rescue => e
|
|
464
|
+
errs.append(e)
|
|
445
465
|
end
|
|
446
466
|
raise ["Could not create a spot instance:", errs].flatten.join("\n")
|
|
447
467
|
end
|
|
@@ -450,7 +470,6 @@ module Kitchen
|
|
|
450
470
|
debug("Creating EC2 Spot Instance..")
|
|
451
471
|
instance_data = instance_generator.ec2_instance_data
|
|
452
472
|
|
|
453
|
-
request_duration = config[:spot_wait]
|
|
454
473
|
config_spot_price = config[:spot_price].to_s
|
|
455
474
|
if %w{ondemand on-demand}.include?(config_spot_price)
|
|
456
475
|
spot_price = ""
|
|
@@ -458,9 +477,10 @@ module Kitchen
|
|
|
458
477
|
spot_price = config_spot_price
|
|
459
478
|
end
|
|
460
479
|
spot_options = {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
instance_interruption_behavior
|
|
480
|
+
# Must use one-time in order to use instance_interruption_behavior=terminate
|
|
481
|
+
# spot_instance_type: "one-time", # default
|
|
482
|
+
# Must use instance_interruption_behavior=terminate in order to use block_duration_minutes
|
|
483
|
+
# instance_interruption_behavior: "terminate", # default
|
|
464
484
|
}
|
|
465
485
|
if config[:block_duration_minutes]
|
|
466
486
|
spot_options[:block_duration_minutes] = config[:block_duration_minutes]
|
|
@@ -762,7 +782,9 @@ module Kitchen
|
|
|
762
782
|
ip_protocol: "tcp",
|
|
763
783
|
from_port: port,
|
|
764
784
|
to_port: port,
|
|
765
|
-
ip_ranges:
|
|
785
|
+
ip_ranges: Array(config[:security_group_cidr_ip]).map do |cidr_ip|
|
|
786
|
+
{ cidr_ip: cidr_ip }
|
|
787
|
+
end,
|
|
766
788
|
}
|
|
767
789
|
end
|
|
768
790
|
)
|
|
@@ -803,6 +825,31 @@ module Kitchen
|
|
|
803
825
|
state[:ssh_key] = key_path
|
|
804
826
|
end
|
|
805
827
|
|
|
828
|
+
def attach_network_interface(state)
|
|
829
|
+
info("Attaching Network interface <#{config[:elastic_network_interface_id]}> with the instance <#{state[:server_id]}> .")
|
|
830
|
+
client = ::Aws::EC2::Client.new(region: config[:region])
|
|
831
|
+
begin
|
|
832
|
+
check_eni = client.describe_network_interface_attribute({
|
|
833
|
+
attribute: "attachment",
|
|
834
|
+
network_interface_id: config[:elastic_network_interface_id],
|
|
835
|
+
})
|
|
836
|
+
if check_eni.attachment.nil?
|
|
837
|
+
unless state[:server_id].nil?
|
|
838
|
+
client.attach_network_interface({
|
|
839
|
+
device_index: 1,
|
|
840
|
+
instance_id: state[:server_id],
|
|
841
|
+
network_interface_id: config[:elastic_network_interface_id],
|
|
842
|
+
})
|
|
843
|
+
info("Attached Network interface <#{config[:elastic_network_interface_id]}> with the instance <#{state[:server_id]}> .")
|
|
844
|
+
end
|
|
845
|
+
else
|
|
846
|
+
puts "ENI #{config[:elastic_network_interface_id]} already attached."
|
|
847
|
+
end
|
|
848
|
+
rescue ::Aws::EC2::Errors::InvalidNetworkInterfaceIDNotFound => e
|
|
849
|
+
warn("#{e}")
|
|
850
|
+
end
|
|
851
|
+
end
|
|
852
|
+
|
|
806
853
|
# Clean up a temporary security group for this instance.
|
|
807
854
|
#
|
|
808
855
|
# @api private
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
1
|
#
|
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
3
|
#
|
|
@@ -22,6 +21,6 @@ module Kitchen
|
|
|
22
21
|
module Driver
|
|
23
22
|
|
|
24
23
|
# Version string for EC2 Test Kitchen driver
|
|
25
|
-
EC2_VERSION = "3.
|
|
24
|
+
EC2_VERSION = "3.10.0".freeze
|
|
26
25
|
end
|
|
27
26
|
end
|
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: 3.
|
|
4
|
+
version: 3.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fletcher Nichol
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-07-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: test-kitchen
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
version: 1.4.1
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
22
|
+
version: '4'
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,35 +29,7 @@ dependencies:
|
|
|
29
29
|
version: 1.4.1
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
33
|
-
- !ruby/object:Gem::Dependency
|
|
34
|
-
name: excon
|
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - ">="
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '0'
|
|
40
|
-
type: :runtime
|
|
41
|
-
prerelease: false
|
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - ">="
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '0'
|
|
47
|
-
- !ruby/object:Gem::Dependency
|
|
48
|
-
name: multi_json
|
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - ">="
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0'
|
|
54
|
-
type: :runtime
|
|
55
|
-
prerelease: false
|
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - ">="
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: '0'
|
|
32
|
+
version: '4'
|
|
61
33
|
- !ruby/object:Gem::Dependency
|
|
62
34
|
name: aws-sdk-ec2
|
|
63
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -92,104 +64,6 @@ dependencies:
|
|
|
92
64
|
- - "<"
|
|
93
65
|
- !ruby/object:Gem::Version
|
|
94
66
|
version: '4.0'
|
|
95
|
-
- !ruby/object:Gem::Dependency
|
|
96
|
-
name: rspec
|
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
|
98
|
-
requirements:
|
|
99
|
-
- - "~>"
|
|
100
|
-
- !ruby/object:Gem::Version
|
|
101
|
-
version: '3.2'
|
|
102
|
-
type: :development
|
|
103
|
-
prerelease: false
|
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
requirements:
|
|
106
|
-
- - "~>"
|
|
107
|
-
- !ruby/object:Gem::Version
|
|
108
|
-
version: '3.2'
|
|
109
|
-
- !ruby/object:Gem::Dependency
|
|
110
|
-
name: countloc
|
|
111
|
-
requirement: !ruby/object:Gem::Requirement
|
|
112
|
-
requirements:
|
|
113
|
-
- - "~>"
|
|
114
|
-
- !ruby/object:Gem::Version
|
|
115
|
-
version: '0.4'
|
|
116
|
-
type: :development
|
|
117
|
-
prerelease: false
|
|
118
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
119
|
-
requirements:
|
|
120
|
-
- - "~>"
|
|
121
|
-
- !ruby/object:Gem::Version
|
|
122
|
-
version: '0.4'
|
|
123
|
-
- !ruby/object:Gem::Dependency
|
|
124
|
-
name: maruku
|
|
125
|
-
requirement: !ruby/object:Gem::Requirement
|
|
126
|
-
requirements:
|
|
127
|
-
- - "~>"
|
|
128
|
-
- !ruby/object:Gem::Version
|
|
129
|
-
version: '0.6'
|
|
130
|
-
type: :development
|
|
131
|
-
prerelease: false
|
|
132
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
133
|
-
requirements:
|
|
134
|
-
- - "~>"
|
|
135
|
-
- !ruby/object:Gem::Version
|
|
136
|
-
version: '0.6'
|
|
137
|
-
- !ruby/object:Gem::Dependency
|
|
138
|
-
name: simplecov
|
|
139
|
-
requirement: !ruby/object:Gem::Requirement
|
|
140
|
-
requirements:
|
|
141
|
-
- - "~>"
|
|
142
|
-
- !ruby/object:Gem::Version
|
|
143
|
-
version: '0.7'
|
|
144
|
-
type: :development
|
|
145
|
-
prerelease: false
|
|
146
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
147
|
-
requirements:
|
|
148
|
-
- - "~>"
|
|
149
|
-
- !ruby/object:Gem::Version
|
|
150
|
-
version: '0.7'
|
|
151
|
-
- !ruby/object:Gem::Dependency
|
|
152
|
-
name: yard
|
|
153
|
-
requirement: !ruby/object:Gem::Requirement
|
|
154
|
-
requirements:
|
|
155
|
-
- - ">="
|
|
156
|
-
- !ruby/object:Gem::Version
|
|
157
|
-
version: 0.9.11
|
|
158
|
-
type: :development
|
|
159
|
-
prerelease: false
|
|
160
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
161
|
-
requirements:
|
|
162
|
-
- - ">="
|
|
163
|
-
- !ruby/object:Gem::Version
|
|
164
|
-
version: 0.9.11
|
|
165
|
-
- !ruby/object:Gem::Dependency
|
|
166
|
-
name: chefstyle
|
|
167
|
-
requirement: !ruby/object:Gem::Requirement
|
|
168
|
-
requirements:
|
|
169
|
-
- - '='
|
|
170
|
-
- !ruby/object:Gem::Version
|
|
171
|
-
version: 1.1.2
|
|
172
|
-
type: :development
|
|
173
|
-
prerelease: false
|
|
174
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
175
|
-
requirements:
|
|
176
|
-
- - '='
|
|
177
|
-
- !ruby/object:Gem::Version
|
|
178
|
-
version: 1.1.2
|
|
179
|
-
- !ruby/object:Gem::Dependency
|
|
180
|
-
name: climate_control
|
|
181
|
-
requirement: !ruby/object:Gem::Requirement
|
|
182
|
-
requirements:
|
|
183
|
-
- - ">="
|
|
184
|
-
- !ruby/object:Gem::Version
|
|
185
|
-
version: '0'
|
|
186
|
-
type: :development
|
|
187
|
-
prerelease: false
|
|
188
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
189
|
-
requirements:
|
|
190
|
-
- - ">="
|
|
191
|
-
- !ruby/object:Gem::Version
|
|
192
|
-
version: '0'
|
|
193
67
|
description: A Test Kitchen Driver for Amazon EC2
|
|
194
68
|
email:
|
|
195
69
|
- fnichol@nichol.ca
|
|
@@ -224,14 +98,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
224
98
|
requirements:
|
|
225
99
|
- - ">="
|
|
226
100
|
- !ruby/object:Gem::Version
|
|
227
|
-
version: '2.
|
|
101
|
+
version: '2.5'
|
|
228
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
103
|
requirements:
|
|
230
104
|
- - ">="
|
|
231
105
|
- !ruby/object:Gem::Version
|
|
232
106
|
version: '0'
|
|
233
107
|
requirements: []
|
|
234
|
-
rubygems_version: 3.
|
|
108
|
+
rubygems_version: 3.2.15
|
|
235
109
|
signing_key:
|
|
236
110
|
specification_version: 4
|
|
237
111
|
summary: A Test Kitchen Driver for Amazon EC2
|