diff --git a/lib/kitchen/driver/aws/instance_generator.rb b/lib/kitchen/driver/aws/instance_generator.rb index dbad7f8..45daae2 100644 --- a/lib/kitchen/driver/aws/instance_generator.rb +++ b/lib/kitchen/driver/aws/instance_generator.rb @@ -173,6 +173,9 @@ def ec2_instance_data if config[:security_group_ids] i[:network_interfaces][0][:groups] = i.delete(:security_group_ids) end + if config[:associate_ipv6] + i[:network_interfaces][0][:ipv_6_address_count] = 1 + end end availability_zone = config[:availability_zone] if availability_zone diff --git a/lib/kitchen/driver/ec2.rb b/lib/kitchen/driver/ec2.rb index a20b286..b873e8a 100644 --- a/lib/kitchen/driver/ec2.rb +++ b/lib/kitchen/driver/ec2.rb @@ -85,6 +85,7 @@ class Ec2 < Kitchen::Driver::Base default_config :image_search, nil default_config :username, nil default_config :associate_public_ip, nil + default_config :associate_ipv6, nil default_config :interface, nil default_config :http_proxy, ENV["HTTPS_PROXY"] || ENV.fetch("HTTP_PROXY", nil) default_config :retry_limit, 3 diff --git a/spec/kitchen/driver/aws/instance_generator_spec.rb b/spec/kitchen/driver/aws/instance_generator_spec.rb index 4e89811..9d05d7d 100644 --- a/spec/kitchen/driver/aws/instance_generator_spec.rb +++ b/spec/kitchen/driver/aws/instance_generator_spec.rb @@ -542,6 +542,35 @@ ) end + context "and associate_ipv6 is provided" do + let(:config) do + { + region: "us-east-1", + associate_public_ip: true, + associate_ipv6: true, + } + end + + it "adds a network_interfaces block" do + expect(generator.ec2_instance_data).to eq( + instance_type: nil, + ebs_optimized: nil, + image_id: nil, + key_name: nil, + subnet_id: nil, + private_ip_address: nil, + network_interfaces: [{ + device_index: 0, + associate_public_ip_address: true, + ipv_6_address_count: 1, + delete_on_termination: true, + }], + max_count: 1, + min_count: 1 + ) + end + end + context "and subnet is provided" do let(:config) do {