summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Chappell <mchappel@redhat.com>2019-10-21 14:55:44 +0200
committerSloane Hertel <shertel@redhat.com>2019-10-21 14:55:44 +0200
commit145b79ef0e96ffeef30ba4c8166fe385af83761f (patch)
tree6aade11472abf757c37eb153dbcec515fc431c75
parentaa671be28bb6a3b4b597e54af618a5255a074149 (diff)
downloadansible-145b79ef0e96ffeef30ba4c8166fe385af83761f.tar.gz
ec2_instance test cleanup (#63708)
* ec2_instance/ec2_instance_info : Fixup sanity test errors * Move ec2_instance integration tests to use aws_defaults * Search for the AMI instead of hardcoding an AMI * Make our VPC CIDR variable * Remove AZ assumptions - no guarantees about specific AZs being available * Make sure we terminate instances when we're done with them. * Add a 10 second pause for IAM roles to become available before using them * Wait on instance changes by default * Switch out t2 instances for t3 they're cheaper and have more CPU available * Pull t3.nano instance info a little earlier * rework vpc_name and vpc_cidr a little * Mark ec2_instance tests unsupported for now, they take too long
-rw-r--r--lib/ansible/modules/cloud/amazon/ec2_instance.py132
-rw-r--r--lib/ansible/modules/cloud/amazon/ec2_instance_info.py15
-rw-r--r--test/integration/targets/ec2_instance/aliases5
-rw-r--r--test/integration/targets/ec2_instance/defaults/main.yml27
-rw-r--r--test/integration/targets/ec2_instance/tasks/block_devices.yml145
-rw-r--r--test/integration/targets/ec2_instance/tasks/checkmode_tests.yml48
-rw-r--r--test/integration/targets/ec2_instance/tasks/cpu_options.yml41
-rw-r--r--test/integration/targets/ec2_instance/tasks/default_vpc_tests.yml29
-rw-r--r--test/integration/targets/ec2_instance/tasks/ebs_optimized.yml66
-rw-r--r--test/integration/targets/ec2_instance/tasks/env_cleanup.yml35
-rw-r--r--test/integration/targets/ec2_instance/tasks/env_setup.yml35
-rw-r--r--test/integration/targets/ec2_instance/tasks/external_resource_attach.yml59
-rw-r--r--test/integration/targets/ec2_instance/tasks/iam_instance_role.yml52
-rw-r--r--test/integration/targets/ec2_instance/tasks/instance_no_wait.yml114
-rw-r--r--test/integration/targets/ec2_instance/tasks/main.yml64
-rw-r--r--test/integration/targets/ec2_instance/tasks/tags_and_vpc_settings.yml41
-rw-r--r--test/integration/targets/ec2_instance/tasks/termination_protection.yml37
-rw-r--r--test/integration/targets/ec2_instance/tasks/version_fail.yml16
-rw-r--r--test/integration/targets/ec2_instance/tasks/version_fail_wrapper.yml27
-rw-r--r--test/sanity/ignore.txt6
20 files changed, 477 insertions, 517 deletions
diff --git a/lib/ansible/modules/cloud/amazon/ec2_instance.py b/lib/ansible/modules/cloud/amazon/ec2_instance.py
index e2f1ea11e7..b289db0bf2 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_instance.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_instance.py
@@ -24,11 +24,13 @@ options:
instance_ids:
description:
- If you specify one or more instance IDs, only instances that have the specified IDs are returned.
+ type: list
state:
description:
- Goal state for the instances.
choices: [present, terminated, running, started, stopped, restarted, rebooted, absent]
default: present
+ type: str
wait:
description:
- Whether or not to wait for the desired state (use wait_timeout to customize this).
@@ -38,33 +40,41 @@ options:
description:
- How long to wait (in seconds) for the instance to finish booting/terminating.
default: 600
+ type: int
instance_type:
description:
- Instance type to use for the instance, see U(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
Only required when instance is not already present.
default: t2.micro
+ type: str
user_data:
description:
- Opaque blob of data which is made available to the ec2 instance
+ type: str
tower_callback:
description:
- Preconfigured user-data to enable an instance to perform a Tower callback (Linux only).
- Mutually exclusive with I(user_data).
- For Windows instances, to enable remote access via Ansible set I(tower_callback.windows) to true, and optionally set an admin password.
- If using 'windows' and 'set_password', callback to Tower will not be performed but the instance will be ready to receive winrm connections from Ansible.
+ type: dict
suboptions:
tower_address:
description:
- IP address or DNS name of Tower server. Must be accessible via this address from the VPC that this instance will be launched in.
+ type: str
job_template_id:
description:
- Either the integer ID of the Tower Job Template, or the name (name supported only for Tower 3.2+).
+ type: str
host_config_key:
description:
- Host configuration secret key generated by the Tower job template.
+ type: str
tags:
description:
- A hash/dictionary of tags to add to the new instance or to add/remove from an existing one.
+ type: dict
purge_tags:
description:
- Delete any tags not specified in the task that are on the instance.
@@ -75,65 +85,136 @@ options:
description:
- An image to use for the instance. The M(ec2_ami_info) module may be used to retrieve images.
One of I(image) or I(image_id) are required when instance is not already present.
- - Complex object containing I(image.id), I(image.ramdisk), and I(image.kernel).
- - I(image.id) is the AMI ID.
- - I(image.ramdisk) overrides the AMI's default ramdisk ID.
- - I(image.kernel) is a string AKI to override the AMI kernel.
+ type: dict
+ suboptions:
+ id:
+ description:
+ - The AMI ID.
+ type: str
+ ramdisk:
+ description:
+ - Overrides the AMI's default ramdisk ID.
+ type: str
+ kernel:
+ description:
+ - a string AKI to override the AMI kernel.
image_id:
description:
- I(ami) ID to use for the instance. One of I(image) or I(image_id) are required when instance is not already present.
- This is an alias for I(image.id).
+ type: str
security_groups:
description:
- A list of security group IDs or names (strings). Mutually exclusive with I(security_group).
+ type: list
security_group:
description:
- A security group ID or name. Mutually exclusive with I(security_groups).
+ type: str
name:
description:
- The Name tag for the instance.
+ type: str
vpc_subnet_id:
description:
- The subnet ID in which to launch the instance (VPC)
If none is provided, ec2_instance will chose the default zone of the default VPC.
aliases: ['subnet_id']
+ type: str
network:
description:
- Either a dictionary containing the key 'interfaces' corresponding to a list of network interface IDs or
containing specifications for a single network interface.
- - If specifications for a single network are given, accepted keys are assign_public_ip (bool),
- private_ip_address (str), ipv6_addresses (list), source_dest_check (bool), description (str),
- delete_on_termination (bool), device_index (int), groups (list of security group IDs),
- private_ip_addresses (list), subnet_id (str).
- - I(network.interfaces) should be a list of ENI IDs (strings) or a list of objects containing the key I(id).
- - Use the ec2_eni to create ENIs with special settings.
+ - Use the ec2_eni module to create ENIs with special settings.
+ type: dict
+ suboptions:
+ interfaces:
+ description:
+ - a list of ENI IDs (strings) or a list of objects containing the key I(id).
+ type: list
+ assign_public_ip:
+ description:
+ - when true assigns a public IP address to the interface
+ type: bool
+ private_ip_address:
+ description:
+ - an IPv4 address to assign to the interface
+ type: str
+ ipv6_addresses:
+ description:
+ - a list of IPv6 addresses to assign to the network interface
+ type: list
+ source_dest_check:
+ description:
+ - controls whether source/destination checking is enabled on the interface
+ type: bool
+ description:
+ description:
+ - a description for the network interface
+ type: str
+ private_ip_addresses:
+ description:
+ - a list of IPv4 addresses to assign to the network interface
+ type: list
+ subnet_id:
+ description:
+ - the subnet to connect the network interface to
+ type: str
+ delete_on_termination:
+ description:
+ - Delete the interface when the instance it is attached to is
+ terminated.
+ type: bool
+ device_index:
+ description:
+ - The index of the interface to modify
+ type: int
+ groups:
+ description:
+ - a list of security group IDs to attach to the interface
+ type: list
volumes:
description:
- A list of block device mappings, by default this will always use the AMI root device so the volumes option is primarily for adding more storage.
- A mapping contains the (optional) keys device_name, virtual_name, ebs.volume_type, ebs.volume_size, ebs.kms_key_id,
ebs.iops, and ebs.delete_on_termination.
- For more information about each parameter, see U(https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html).
+ type: list
launch_template:
description:
- The EC2 launch template to base instance configuration on.
- - I(launch_template.id) the ID or the launch template (optional if name is specified).
- - I(launch_template.name) the pretty name of the launch template (optional if id is specified).
- - I(launch_template.version) the specific version of the launch template to use. If unspecified, the template default is chosen.
+ type: dict
+ suboptions:
+ id:
+ description:
+ - the ID of the launch template (optional if name is specified).
+ type: str
+ name:
+ description:
+ - the pretty name of the launch template (optional if id is specified).
+ type: str
+ version:
+ description:
+ - the specific version of the launch template to use. If unspecified, the template default is chosen.
key_name:
description:
- Name of the SSH access key to assign to the instance - must exist in the region the instance is created.
+ type: str
availability_zone:
description:
- Specify an availability zone to use the default subnet it. Useful if not specifying the I(vpc_subnet_id) parameter.
- If no subnet, ENI, or availability zone is provided, the default subnet in the default VPC will be used in the first AZ (alphabetically sorted).
+ type: str
instance_initiated_shutdown_behavior:
description:
- Whether to stop or terminate an instance upon shutdown.
choices: ['stop', 'terminate']
+ type: str
tenancy:
description:
- What type of tenancy to allow an instance to use. Default is shared tenancy. Dedicated tenancy will incur additional charges.
choices: ['dedicated', 'default']
+ type: str
termination_protection:
description:
- Whether to enable termination protection.
@@ -143,7 +224,8 @@ options:
description:
- For T2 series instances, choose whether to allow increased charges to buy CPU credits if the default pool is depleted.
- Choose I(unlimited) to enable buying additional CPU credits.
- choices: [unlimited, standard]
+ choices: ['unlimited', 'standard']
+ type: str
cpu_options:
description:
- Reduce the number of vCPU exposed to the instance.
@@ -151,16 +233,19 @@ options:
- See U(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) for combinations available.
- Requires botocore >= 1.10.16
version_added: 2.7
+ type: dict
suboptions:
threads_per_core:
description:
- Select the number of threads per core to enable. Disable or Enable Intel HT.
choices: [1, 2]
required: true
+ type: int
core_count:
description:
- Set the number of core to enable.
required: true
+ type: int
detailed_monitoring:
description:
- Whether to allow detailed cloudwatch metrics to be collected, enabling more detailed alerting.
@@ -175,19 +260,21 @@ options:
consists of a filter key and a filter value. See
U(https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html).
for possible filters. Filter names and values are case sensitive.
- By default, instances are filtered for counting by their "Name" tag, base AMI, state (running, by default), and
+ - By default, instances are filtered for counting by their "Name" tag, base AMI, state (running, by default), and
subnet ID. Any queryable filter can be used. Good candidates are specific tags, SSH keys, or security groups.
- default: {"tag:Name": "<provided-Name-attribute>", "subnet-id": "<provided-or-default subnet>"}
+ type: dict
instance_role:
description:
- The ARN or name of an EC2-enabled instance role to be used. If a name is not provided in arn format
then the ListInstanceProfiles permission must also be granted.
U(https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html) If no full ARN is provided,
the role with a matching name will be used from the active AWS account.
+ type: str
placement_group:
description:
- The placement group that needs to be assigned to the instance
version_added: 2.8
+ type: str
extends_documentation_fragment:
- aws
@@ -493,13 +580,14 @@ instances:
ipv6_addresses:
description: One or more IPv6 addresses associated with the network interface.
returned: always
- type: complex
+ type: list
+ elements: dict
contains:
- - ipv6_address:
- description: The IPv6 address.
- returned: always
- type: str
- sample: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
+ ipv6_address:
+ description: The IPv6 address.
+ returned: always
+ type: str
+ sample: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
mac_address:
description: The MAC address.
returned: always
diff --git a/lib/ansible/modules/cloud/amazon/ec2_instance_info.py b/lib/ansible/modules/cloud/amazon/ec2_instance_info.py
index f306114c29..7615b958d3 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_instance_info.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_instance_info.py
@@ -28,6 +28,7 @@ options:
- If you specify one or more instance IDs, only instances that have the specified IDs are returned.
required: false
version_added: 2.4
+ type: list
filters:
description:
- A dict of filters to apply. Each dict item consists of a filter key and a filter value. See
@@ -35,6 +36,7 @@ options:
names and values are case sensitive.
required: false
default: {}
+ type: dict
extends_documentation_fragment:
- aws
@@ -279,13 +281,14 @@ instances:
ipv6_addresses:
description: One or more IPv6 addresses associated with the network interface.
returned: always
- type: complex
+ type: list
+ elements: dict
contains:
- - ipv6_address:
- description: The IPv6 address.
- returned: always
- type: str
- sample: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
+ ipv6_address:
+ description: The IPv6 address.
+ returned: always
+ type: str
+ sample: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
mac_address:
description: The MAC address.
returned: always
diff --git a/test/integration/targets/ec2_instance/aliases b/test/integration/targets/ec2_instance/aliases
index 5e7a8d3877..6f1611de9a 100644
--- a/test/integration/targets/ec2_instance/aliases
+++ b/test/integration/targets/ec2_instance/aliases
@@ -1,3 +1,4 @@
+ec2_instance_info
cloud/aws
-shippable/aws/group2
-unstable
+#shippable/aws/group2
+unsupported
diff --git a/test/integration/targets/ec2_instance/defaults/main.yml b/test/integration/targets/ec2_instance/defaults/main.yml
index 6138370814..5e4a6dc504 100644
--- a/test/integration/targets/ec2_instance/defaults/main.yml
+++ b/test/integration/targets/ec2_instance/defaults/main.yml
@@ -2,22 +2,13 @@
# defaults file for ec2_instance
ec2_instance_name: '{{ resource_prefix }}-node'
ec2_instance_owner: 'integration-run-{{ resource_prefix }}'
-ec2_ami_image:
- # Amazon Linux - collected 2019-05-10
- ap-northeast-1: ami-086063d8c95bfa211
- ap-northeast-2: ami-04a1d511fd8937540
- ap-south-1: ami-0d1ca7565b637e9a5
- ap-southeast-1: ami-07dd66a9764fbb937
- ap-southeast-2: ami-0ca7144d77a93c7a8
- ca-central-1: ami-0e5e1c6b373fed93b
- eu-central-1: ami-05ba799ee5fc165db
- eu-west-1: ami-055ff4f3e62e8e65e
- eu-west-2: ami-072edd63fd2b95ca7
- sa-east-1: ami-0c0698b4027cd5931
- us-east-1: ami-0771c28c5580e5716
- us-east-2: ami-063225b63017efd17
- us-west-1: ami-04abfbe0050a1ef1d
- us-west-2: ami-027c5e2ccf2970def
+ec2_instance_type: 't3.micro'
+ec2_ami_name: 'amzn2-ami-hvm-2.*-x86_64-gp2'
-# We need to use ENA enabled AMIs to get EBS optimized instances.
-ec2_ebs_optimized_ami_image: "{{ ec2_ami_image }}"
+vpc_name: '{{ resource_prefix }}-vpc'
+vpc_seed: '{{ resource_prefix }}'
+vpc_cidr: '10.{{ 256 | random(seed=vpc_seed) }}.0.0/16'
+subnet_a_cidr: '10.{{ 256 | random(seed=vpc_seed) }}.32.0/24'
+subnet_a_startswith: '10.{{ 256 | random(seed=vpc_seed) }}.32.'
+subnet_b_cidr: '10.{{ 256 | random(seed=vpc_seed) }}.33.0/24'
+subnet_b_startswith: '10.{{ 256 | random(seed=vpc_seed) }}.33.'
diff --git a/test/integration/targets/ec2_instance/tasks/block_devices.yml b/test/integration/targets/ec2_instance/tasks/block_devices.yml
index 3fc53cee10..a6aa2d5b3a 100644
--- a/test/integration/targets/ec2_instance/tasks/block_devices.yml
+++ b/test/integration/targets/ec2_instance/tasks/block_devices.yml
@@ -1,79 +1,80 @@
-- name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
+- block:
+ - name: New instance with an extra block device
+ ec2_instance:
+ name: "{{ resource_prefix }}-test-ebs-vols"
+ image_id: "{{ ec2_ami_image }}"
+ vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
+ volumes:
+ - device_name: /dev/sdb
+ ebs:
+ volume_size: 20
+ delete_on_termination: true
+ volume_type: standard
+ tags:
+ TestId: "{{ resource_prefix }}"
+ instance_type: "{{ ec2_instance_type }}"
+ wait: true
+ register: in_test_vpc
-- name: New instance with an extra block device
- ec2_instance:
- name: "{{ resource_prefix }}-test-ebs-vols"
- image_id: "{{ ec2_ami_image[aws_region] }}"
- vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- volumes:
- - device_name: /dev/sdb
- ebs:
- volume_size: 20
- delete_on_termination: true
- volume_type: standard
- tags:
- TestId: "{{ resource_prefix }}"
- instance_type: t2.micro
- wait: true
- <<: *aws_connection_info
- register: in_test_vpc
+ - name: Gather instance info
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-ebs-vols"
+ register: in_test_vpc_instance
-- name: Gather instance info
- ec2_instance_info:
- filters:
- "tag:Name": "{{ resource_prefix }}-test-ebs-vols"
- <<: *aws_connection_info
- register: in_test_vpc_instance
+ - assert:
+ that:
+ - in_test_vpc is not failed
+ - in_test_vpc is changed
+ - in_test_vpc_instance.instances[0].block_device_mappings[0]
+ - in_test_vpc_instance.instances[0].block_device_mappings[1]
+ - in_test_vpc_instance.instances[0].block_device_mappings[1].device_name == '/dev/sdb'
-- assert:
- that:
- - in_test_vpc is not failed
- - in_test_vpc is changed
- - in_test_vpc_instance.instances[0].block_device_mappings[0]
- - in_test_vpc_instance.instances[0].block_device_mappings[1]
- - in_test_vpc_instance.instances[0].block_device_mappings[1].device_name == '/dev/sdb'
+ - name: New instance with an extra block device(check mode)
+ ec2_instance:
+ name: "{{ resource_prefix }}-test-ebs-vols-checkmode"
+ image_id: "{{ ec2_ami_image }}"
+ vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
+ volumes:
+ - device_name: /dev/sdb
+ ebs:
+ volume_size: 20
+ delete_on_termination: true
+ volume_type: standard
+ tags:
+ TestId: "{{ resource_prefix }}"
+ instance_type: "{{ ec2_instance_type }}"
+ check_mode: yes
-- name: New instance with an extra block device(check mode)
- ec2_instance:
- name: "{{ resource_prefix }}-test-ebs-vols-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
- vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- volumes:
- - device_name: /dev/sdb
- ebs:
- volume_size: 20
- delete_on_termination: true
- volume_type: standard
- tags:
- TestId: "{{ resource_prefix }}"
- instance_type: t2.micro
- <<: *aws_connection_info
- check_mode: yes
+ - name: "fact presented ec2 instance"
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-ebs-vols"
+ "instance-state-name": "running"
+ register: presented_instance_fact
-- name: "fact presented ec2 instance"
- ec2_instance_info:
- filters:
- "tag:Name": "{{ resource_prefix }}-test-ebs-vols"
- "instance-state-name": "running"
- <<: *aws_connection_info
- register: presented_instance_fact
+ - name: "fact checkmode ec2 instance"
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-ebs-vols-checkmode"
+ register: checkmode_instance_fact
-- name: "fact checkmode ec2 instance"
- ec2_instance_info:
- filters:
- "tag:Name": "{{ resource_prefix }}-test-ebs-vols-checkmode"
- <<: *aws_connection_info
- register: checkmode_instance_fact
+ - name: "Confirm whether the check mode is working normally."
+ assert:
+ that:
+ - "{{ presented_instance_fact.instances | length }} > 0"
+ - "{{ checkmode_instance_fact.instances | length }} == 0"
-- name: "Confirm whether the check mode is working normally."
- assert:
- that:
- - "{{ presented_instance_fact.instances | length }} > 0"
- - "{{ checkmode_instance_fact.instances | length }} == 0"
+ - name: Terminate instances
+ ec2_instance:
+ instance_ids: "{{ in_test_vpc.instance_ids }}"
+ state: absent
+
+ always:
+ - name: Terminate test-ebs-vols instances
+ ec2_instance:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-ebs-vols"
+ state: absent
+ wait: false
+ ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/checkmode_tests.yml b/test/integration/targets/ec2_instance/tasks/checkmode_tests.yml
index 05eed56380..07f27dc00a 100644
--- a/test/integration/targets/ec2_instance/tasks/checkmode_tests.yml
+++ b/test/integration/targets/ec2_instance/tasks/checkmode_tests.yml
@@ -1,46 +1,33 @@
-- name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
-
- block:
- name: Make basic instance
ec2_instance:
name: "{{ resource_prefix }}-checkmode-comparison"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
security_groups: "{{ sg.group_id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
wait: false
- <<: *aws_connection_info
register: basic_instance
- name: Make basic instance(check mode)
ec2_instance:
name: "{{ resource_prefix }}-checkmode-comparison-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
security_groups: "{{ sg.group_id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- <<: *aws_connection_info
check_mode: yes
- name: fact presented ec2 instance
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
- <<: *aws_connection_info
register: presented_instance_fact
- name: fact checkmode ec2 instance
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison-checkmode"
- <<: *aws_connection_info
register: checkmode_instance_fact
- name: Confirm whether the check mode is working normally.
@@ -54,14 +41,12 @@
name: "{{ resource_prefix }}-checkmode-comparison"
state: stopped
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
- <<: *aws_connection_info
check_mode: yes
- name: fact ec2 instance
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
- <<: *aws_connection_info
register: confirm_checkmode_stopinstance_fact
- name: Verify that it was not stopped.
@@ -74,17 +59,14 @@
name: "{{ resource_prefix }}-checkmode-comparison"
state: stopped
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
- <<: *aws_connection_info
register: instance_stop
until: not instance_stop.failed
retries: 10
-
- name: fact stopped ec2 instance
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
- <<: *aws_connection_info
register: confirm_stopinstance_fact
- name: Verify that it was stopped.
@@ -97,16 +79,14 @@
name: "{{ resource_prefix }}-checkmode-comparison"
state: running
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
- <<: *aws_connection_info
check_mode: yes
-
+
- name: fact ec2 instance
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
- <<: *aws_connection_info
register: confirm_checkmode_runninginstance_fact
-
+
- name: Verify that it was not running.
assert:
that:
@@ -117,13 +97,11 @@
name: "{{ resource_prefix }}-checkmode-comparison"
state: running
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
- <<: *aws_connection_info
-
+
- name: fact ec2 instance.
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
- <<: *aws_connection_info
register: confirm_runninginstance_fact
- name: Verify that it was running.
@@ -136,16 +114,14 @@
name: "{{ resource_prefix }}-checkmode-comparison"
state: absent
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
- <<: *aws_connection_info
check_mode: yes
- name: fact ec2 instance
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
- <<: *aws_connection_info
register: confirm_checkmode_terminatedinstance_fact
-
+
- name: Verify that it was not terminated,
assert:
that:
@@ -156,26 +132,24 @@
name: "{{ resource_prefix }}-checkmode-comparison"
state: absent
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
- <<: *aws_connection_info
- name: fact ec2 instance
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
- <<: *aws_connection_info
register: confirm_terminatedinstance_fact
-
+
- name: Verify that it was terminated,
assert:
that:
- '"{{ confirm_terminatedinstance_fact.instances[0].state.name }}" == "terminated"'
-
+
always:
- name: Terminate instance
ec2:
instance_ids: "{{ basic_instance.instance_ids }}"
state: absent
- <<: *aws_connection_info
+ wait: false
register: removed
until: removed is not failed
ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/cpu_options.yml b/test/integration/targets/ec2_instance/tasks/cpu_options.yml
index 20904ac1b9..b160a8ef9a 100644
--- a/test/integration/targets/ec2_instance/tasks/cpu_options.yml
+++ b/test/integration/targets/ec2_instance/tasks/cpu_options.yml
@@ -1,17 +1,8 @@
- block:
- - name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
-
- name: create t3.nano instance with cpu_options
ec2_instance:
name: "{{ resource_prefix }}-test-t3nano-1-threads-per-core"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
@@ -20,7 +11,6 @@
core_count: 1
threads_per_core: 1
wait: false
- <<: *aws_connection_info
register: instance_creation
- name: instance with cpu_options created with the right options
@@ -33,7 +23,7 @@
ec2_instance:
state: present
name: "{{ resource_prefix }}-test-t3nano-1-threads-per-core"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
@@ -42,20 +32,29 @@
core_count: 1
threads_per_core: 2
wait: false
- <<: *aws_connection_info
register: cpu_options_update
ignore_errors: yes
+ - name: "fact presented ec2 instance"
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-t3nano-1-threads-per-core"
+ register: presented_instance_fact
+
- name: modify cpu_options has no effect on existing instance
assert:
that:
- cpu_options_update is success
- cpu_options_update is not changed
+ - "{{ presented_instance_fact.instances | length }} > 0"
+ - "'{{ presented_instance_fact.instances.0.state.name }}' in ['running','pending']"
+ - "{{ presented_instance_fact.instances.0.cpu_options.core_count }} == 1"
+ - "{{ presented_instance_fact.instances.0.cpu_options.threads_per_core }} == 1"
- name: create t3.nano instance with cpu_options(check mode)
ec2_instance:
name: "{{ resource_prefix }}-test-t3nano-1-threads-per-core-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
@@ -63,31 +62,18 @@
cpu_options:
core_count: 1
threads_per_core: 1
- <<: *aws_connection_info
check_mode: yes
- - name: "fact presented ec2 instance"
- ec2_instance_info:
- filters:
- "tag:Name": "{{ resource_prefix }}-test-t3nano-1-threads-per-core"
- <<: *aws_connection_info
- register: presented_instance_fact
-
- name: "fact checkmode ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-t3nano-1-threads-per-core-checkmode"
- <<: *aws_connection_info
register: checkmode_instance_fact
- name: "Confirm existence of instance id."
assert:
that:
- - "{{ presented_instance_fact.instances | length }} > 0"
- - "'{{ presented_instance_fact.instances.0.state.name }}' in ['running','pending']"
- "{{ checkmode_instance_fact.instances | length }} == 0"
- - "{{ presented_instance_fact.instances.0.cpu_options.core_count }} == 1"
- - "{{ presented_instance_fact.instances.0.cpu_options.threads_per_core }} == 1"
always:
- name: Terminate instances
@@ -96,6 +82,5 @@
tag:TestId: "{{ resource_prefix }}"
state: absent
wait: false
- <<: *aws_connection_info
register: result
ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/default_vpc_tests.yml b/test/integration/targets/ec2_instance/tasks/default_vpc_tests.yml
index 9b1bd037e2..b25ef14e37 100644
--- a/test/integration/targets/ec2_instance/tasks/default_vpc_tests.yml
+++ b/test/integration/targets/ec2_instance/tasks/default_vpc_tests.yml
@@ -1,47 +1,35 @@
- block:
- - name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
- name: Make instance in a default subnet of the VPC
ec2_instance:
name: "{{ resource_prefix }}-test-default-vpc"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
security_groups: "{{ sg.group_id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
wait: false
- <<: *aws_connection_info
register: in_default_vpc
- name: Make instance in a default subnet of the VPC(check mode)
ec2_instance:
name: "{{ resource_prefix }}-test-default-vpc-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
security_groups: "{{ sg.group_id }}"
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
check_mode: yes
- name: "fact presented ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-default-vpc"
- <<: *aws_connection_info
register: presented_instance_fact
- name: "fact checkmode ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-default-vpc-checkmode"
- <<: *aws_connection_info
register: checkmode_instance_fact
- name: "Confirm whether the check mode is working normally."
@@ -50,17 +38,16 @@
- "{{ presented_instance_fact.instances | length }} > 0"
- "{{ checkmode_instance_fact.instances | length }} == 0"
- - name: Terminate instance
- ec2:
+ - name: Terminate instances
+ ec2_instance:
instance_ids: "{{ in_default_vpc.instance_ids }}"
state: absent
- <<: *aws_connection_info
always:
- name: Terminate test-default-vpc instance
- ec2:
+ ec2_instance:
filters:
"tag:Name": "{{ resource_prefix }}-test-default-vpc"
state: absent
- <<: *aws_connection_info
+ wait: false
ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/ebs_optimized.yml b/test/integration/targets/ec2_instance/tasks/ebs_optimized.yml
index fcd75f72f4..d22d54aee6 100644
--- a/test/integration/targets/ec2_instance/tasks/ebs_optimized.yml
+++ b/test/integration/targets/ec2_instance/tasks/ebs_optimized.yml
@@ -1,34 +1,38 @@
-- name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
+- block:
+ - name: Make EBS optimized instance in the testing subnet of the test VPC
+ ec2_instance:
+ name: "{{ resource_prefix }}-test-ebs-optimized-instance-in-vpc"
+ image_id: "{{ ec2_ami_image }}"
+ tags:
+ TestId: "{{ resource_prefix }}"
+ security_groups: "{{ sg.group_id }}"
+ vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
+ ebs_optimized: true
+ instance_type: t3.nano
+ wait: false
+ register: ebs_opt_in_vpc
-- name: Make EBS optimized instance in the testing subnet of the test VPC
- ec2_instance:
- name: "{{ resource_prefix }}-test-ebs-optimized-instance-in-vpc"
- image_id: "{{ ec2_ebs_optimized_ami_image[aws_region] }}"
- tags:
- TestId: "{{ resource_prefix }}"
- security_groups: "{{ sg.group_id }}"
- vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- ebs_optimized: true
- instance_type: t3.nano
- wait: false
- <<: *aws_connection_info
- register: ebs_opt_in_vpc
+ - name: Get ec2 instance info
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-ebs-optimized-instance-in-vpc"
+ register: ebs_opt_instance_info
-- name: Get ec2 instance info
- ec2_instance_info:
- filters:
- "tag:Name": "{{ resource_prefix }}-test-ebs-optimized-instance-in-vpc"
- <<: *aws_connection_info
- register: ebs_opt_instance_info
+ - name: Assert instance is ebs_optimized
+ assert:
+ that:
+ - "{{ ebs_opt_instance_info.instances.0.ebs_optimized }}"
-- name: Assert instance is ebs_optimized
- assert:
- that:
- - "{{ ebs_opt_instance_info.instances.0.ebs_optimized }}"
+ - name: Terminate instances
+ ec2_instance:
+ instance_ids: "{{ ebs_opt_in_vpc.instance_ids }}"
+ state: absent
+
+ always:
+ - name: Terminate test-ebs-vols instances
+ ec2_instance:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-ebs-optimized-instance-in-vpc"
+ state: absent
+ wait: false
+ ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/env_cleanup.yml b/test/integration/targets/ec2_instance/tasks/env_cleanup.yml
index 7ce507e9cb..b794089ce3 100644
--- a/test/integration/targets/ec2_instance/tasks/env_cleanup.yml
+++ b/test/integration/targets/ec2_instance/tasks/env_cleanup.yml
@@ -1,20 +1,9 @@
-- name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
-
-- name: remove any instances in the test VPC
+- name: remove Instances
ec2_instance:
- filters:
- vpc_id: "{{ testing_vpc.vpc.id }}"
state: absent
- <<: *aws_connection_info
- register: removed
- until: removed is not failed
+ filters:
+ vpc-id: "{{ testing_vpc.vpc.id }}"
+ wait: yes
ignore_errors: yes
retries: 10
@@ -22,14 +11,12 @@
ec2_eni_info:
filters:
vpc-id: "{{ testing_vpc.vpc.id }}"
- <<: *aws_connection_info
register: enis
- name: delete all ENIs
ec2_eni:
eni_id: "{{ item.id }}"
state: absent
- <<: *aws_connection_info
until: removed is not failed
with_items: "{{ enis.network_interfaces }}"
ignore_errors: yes
@@ -41,7 +28,6 @@
description: a security group for ansible tests
vpc_id: "{{ testing_vpc.vpc.id }}"
state: absent
- <<: *aws_connection_info
register: removed
until: removed is not failed
ignore_errors: yes
@@ -59,7 +45,6 @@
subnets:
- "{{ testing_subnet_a.subnet.id }}"
- "{{ testing_subnet_b.subnet.id }}"
- <<: *aws_connection_info
register: removed
until: removed is not failed
ignore_errors: yes
@@ -69,7 +54,6 @@
ec2_vpc_igw:
vpc_id: "{{ testing_vpc.vpc.id }}"
state: absent
- <<: *aws_connection_info
register: removed
until: removed is not failed
ignore_errors: yes
@@ -79,8 +63,7 @@
ec2_vpc_subnet:
state: absent
vpc_id: "{{ testing_vpc.vpc.id }}"
- cidr: 10.22.32.0/24
- <<: *aws_connection_info
+ cidr: "{{ subnet_a_cidr }}"
register: removed
until: removed is not failed
ignore_errors: yes
@@ -90,8 +73,7 @@
ec2_vpc_subnet:
state: absent
vpc_id: "{{ testing_vpc.vpc.id }}"
- cidr: 10.22.33.0/24
- <<: *aws_connection_info
+ cidr: "{{ subnet_b_cidr }}"
register: removed
until: removed is not failed
ignore_errors: yes
@@ -99,13 +81,12 @@
- name: remove the VPC
ec2_vpc_net:
- name: "{{ resource_prefix }}-vpc"
- cidr_block: 10.22.32.0/23
+ name: "{{ vpc_name }}"
+ cidr_block: "{{ vpc_cidr }}"
state: absent
tags:
Name: Ansible Testing VPC
tenancy: default
- <<: *aws_connection_info
register: removed
until: removed is not failed
ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/env_setup.yml b/test/integration/targets/ec2_instance/tasks/env_setup.yml
index a17d98795c..193494a3da 100644
--- a/test/integration/targets/ec2_instance/tasks/env_setup.yml
+++ b/test/integration/targets/ec2_instance/tasks/env_setup.yml
@@ -1,49 +1,48 @@
-- name: set connection information for all tasks
+- name: fetch AZ availability
+ aws_az_info:
+ register: az_info
+- name: Assert that we have multiple AZs available to us
+ assert:
+ that: az_info.availability_zones | length >= 2
+
+- name: pick AZs
set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
+ subnet_a_az: '{{ az_info.availability_zones[0].zone_name }}'
+ subnet_b_az: '{{ az_info.availability_zones[1].zone_name }}'
- name: Create VPC for use in testing
ec2_vpc_net:
- name: "{{ resource_prefix }}-vpc"
- cidr_block: 10.22.32.0/23
+ name: "{{ vpc_name }}"
+ cidr_block: "{{ vpc_cidr }}"
tags:
Name: Ansible ec2_instance Testing VPC
tenancy: default
- <<: *aws_connection_info
register: testing_vpc
- name: Create internet gateway for use in testing
ec2_vpc_igw:
vpc_id: "{{ testing_vpc.vpc.id }}"
state: present
- <<: *aws_connection_info
register: igw
- name: Create default subnet in zone A
ec2_vpc_subnet:
state: present
vpc_id: "{{ testing_vpc.vpc.id }}"
- cidr: 10.22.32.0/24
- az: "{{ aws_region }}a"
+ cidr: "{{ subnet_a_cidr }}"
+ az: "{{ subnet_a_az }}"
resource_tags:
Name: "{{ resource_prefix }}-subnet-a"
- <<: *aws_connection_info
register: testing_subnet_a
- name: Create secondary subnet in zone B
ec2_vpc_subnet:
state: present
vpc_id: "{{ testing_vpc.vpc.id }}"
- cidr: 10.22.33.0/24
- az: "{{ aws_region }}b"
+ cidr: "{{ subnet_b_cidr }}"
+ az: "{{ subnet_b_az }}"
resource_tags:
Name: "{{ resource_prefix }}-subnet-b"
- <<: *aws_connection_info
register: testing_subnet_b
- name: create routing rules
@@ -57,7 +56,6 @@
subnets:
- "{{ testing_subnet_a.subnet.id }}"
- "{{ testing_subnet_b.subnet.id }}"
- <<: *aws_connection_info
- name: create a security group with the vpc
ec2_group:
@@ -73,5 +71,4 @@
from_port: 80
to_port: 80
cidr_ip: 0.0.0.0/0
- <<: *aws_connection_info
register: sg
diff --git a/test/integration/targets/ec2_instance/tasks/external_resource_attach.yml b/test/integration/targets/ec2_instance/tasks/external_resource_attach.yml
index 3a8bfdde83..571782e956 100644
--- a/test/integration/targets/ec2_instance/tasks/external_resource_attach.yml
+++ b/test/integration/targets/ec2_instance/tasks/external_resource_attach.yml
@@ -1,38 +1,28 @@
- block:
- - name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
# Make custom ENIs and attach via the `network` parameter
- ec2_eni:
delete_on_termination: true
subnet_id: "{{ testing_subnet_b.subnet.id }}"
security_groups:
- "{{ sg.group_id }}"
- <<: *aws_connection_info
register: eni_a
+
- ec2_eni:
delete_on_termination: true
subnet_id: "{{ testing_subnet_b.subnet.id }}"
security_groups:
- "{{ sg.group_id }}"
- <<: *aws_connection_info
register: eni_b
+
- ec2_eni:
delete_on_termination: true
subnet_id: "{{ testing_subnet_b.subnet.id }}"
security_groups:
- "{{ sg.group_id }}"
- <<: *aws_connection_info
register: eni_c
- ec2_key:
name: "{{ resource_prefix }}_test_key"
- <<: *aws_connection_info
- name: Make instance in the testing subnet created in the test VPC
ec2_instance:
@@ -41,20 +31,18 @@
network:
interfaces:
- id: "{{ eni_a.interface.id }}"
- image_id: "{{ ec2_ami_image[aws_region] }}"
- availability_zone: '{{ aws_region }}b'
+ image_id: "{{ ec2_ami_image }}"
+ availability_zone: '{{ subnet_b_az }}'
tags:
TestId: "{{ resource_prefix }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
wait: false
- <<: *aws_connection_info
register: in_test_vpc
- name: "Gather {{ resource_prefix }}-test-eni-vpc info"
ec2_instance_info:
filters:
"tag:Name": '{{ resource_prefix }}-test-eni-vpc'
- <<: *aws_connection_info
register: in_test_vpc_instance
- assert:
@@ -69,12 +57,11 @@
interfaces:
- id: "{{ eni_a.interface.id }}"
- id: "{{ eni_b.interface.id }}"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
wait: false
- <<: *aws_connection_info
register: add_interface
until: add_interface is not failed
ignore_errors: yes
@@ -87,26 +74,23 @@
network:
interfaces:
- id: "{{ eni_c.interface.id }}"
- image_id: "{{ ec2_ami_image[aws_region] }}"
- availability_zone: '{{ aws_region }}b'
+ image_id: "{{ ec2_ami_image }}"
+ availability_zone: '{{ subnet_b_az }}'
tags:
TestId: "{{ resource_prefix }}"
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
check_mode: yes
- name: "fact presented ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-eni-vpc"
- <<: *aws_connection_info
register: presented_instance_fact
- name: "fact checkmode ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-eni-vpc-checkmode"
- <<: *aws_connection_info
register: checkmode_instance_fact
- name: "Confirm existence of instance id."
@@ -115,27 +99,26 @@
- "{{ presented_instance_fact.instances | length }} > 0"
- "{{ checkmode_instance_fact.instances | length }} == 0"
- - name: Terminate instance
- ec2_instance:
- filters:
- tag:TestId: "{{ resource_prefix }}"
- state: absent
- wait: false
- <<: *aws_connection_info
- register: result
-
always:
- name: Terminate instance
ec2_instance:
instance_ids: "{{ in_test_vpc.instance_ids }}"
state: absent
- wait: false
- <<: *aws_connection_info
+ # We can't delete the ENIs until we've deleted all the instances
+ wait: yes
register: result
ignore_errors: yes
- ec2_key:
name: "{{ resource_prefix }}_test_key"
state: absent
- <<: *aws_connection_info
ignore_errors: yes
+
+ - ec2_eni:
+ eni_id: '{{ item.interface.id }}'
+ state: absent
+ ignore_errors: yes
+ with_items:
+ - '{{ eni_a }}'
+ - '{{ eni_b }}'
+ - '{{ eni_c }}'
diff --git a/test/integration/targets/ec2_instance/tasks/iam_instance_role.yml b/test/integration/targets/ec2_instance/tasks/iam_instance_role.yml
index dc70897012..9c906e3224 100644
--- a/test/integration/targets/ec2_instance/tasks/iam_instance_role.yml
+++ b/test/integration/targets/ec2_instance/tasks/iam_instance_role.yml
@@ -1,12 +1,3 @@
-- name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
-
- block:
- name: Create IAM role for test
iam_role:
@@ -16,7 +7,6 @@
create_instance_profile: yes
managed_policy:
- AmazonEC2ContainerServiceRole
- <<: *aws_connection_info
register: iam_role
- name: Create second IAM role for test
@@ -27,17 +17,19 @@
create_instance_profile: yes
managed_policy:
- AmazonEC2ContainerServiceRole
- <<: *aws_connection_info
register: iam_role_2
+ - name: wait 10 seconds for roles to become available
+ pause:
+ seconds: 10
+
- name: Make instance with an instance_role
ec2_instance:
name: "{{ resource_prefix }}-test-instance-role"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
security_groups: "{{ sg.group_id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
instance_role: "ansible-test-sts-{{ resource_prefix }}-test-policy"
- <<: *aws_connection_info
register: instance_with_role
- assert:
@@ -47,25 +39,22 @@
- name: Make instance with an instance_role(check mode)
ec2_instance:
name: "{{ resource_prefix }}-test-instance-role-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
security_groups: "{{ sg.group_id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
instance_role: "{{ iam_role.arn.replace(':role/', ':instance-profile/') }}"
- <<: *aws_connection_info
check_mode: yes
- name: "fact presented ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-instance-role"
- <<: *aws_connection_info
register: presented_instance_fact
- name: "fact checkmode ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-instance-role-checkmode"
- <<: *aws_connection_info
register: checkmode_instance_fact
- name: "Confirm whether the check mode is working normally."
@@ -77,26 +66,34 @@
- name: Update instance with new instance_role
ec2_instance:
name: "{{ resource_prefix }}-test-instance-role"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
security_groups: "{{ sg.group_id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
instance_role: "{{ iam_role_2.arn.replace(':role/', ':instance-profile/') }}"
- <<: *aws_connection_info
register: instance_with_updated_role
- until: instance_with_updated_role is not failed
- retries: 10
+
+ # XXX We shouldn't need this
+ - name: wait 10 seconds for role update to complete
+ pause:
+ seconds: 10
+
+ - name: "fact checkmode ec2 instance"
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-instance-role"
+ register: updates_instance_info
- assert:
that:
- - 'instance_with_updated_role.instances[0].iam_instance_profile.arn == iam_role_2.arn.replace(":role/", ":instance-profile/")'
- - 'instance_with_updated_role.instances[0].instance_id == instance_with_role.instances[0].instance_id'
+ - 'updates_instance_info.instances[0].iam_instance_profile.arn == iam_role_2.arn.replace(":role/", ":instance-profile/")'
+ - 'updates_instance_info.instances[0].instance_id == instance_with_role.instances[0].instance_id'
always:
- name: Terminate instance
ec2:
instance_ids: "{{ instance_with_role.instance_ids }}"
state: absent
- <<: *aws_connection_info
+ wait: no
register: removed
until: removed is not failed
ignore_errors: yes
@@ -110,7 +107,6 @@
create_instance_profile: yes
managed_policy:
- AmazonEC2ContainerServiceRole
- <<: *aws_connection_info
loop:
- "ansible-test-sts-{{ resource_prefix }}-test-policy"
- "ansible-test-sts-{{ resource_prefix }}-test-policy-2"
diff --git a/test/integration/targets/ec2_instance/tasks/instance_no_wait.yml b/test/integration/targets/ec2_instance/tasks/instance_no_wait.yml
index 298a4bce0a..322bc937d3 100644
--- a/test/integration/targets/ec2_instance/tasks/instance_no_wait.yml
+++ b/test/integration/targets/ec2_instance/tasks/instance_no_wait.yml
@@ -1,62 +1,64 @@
-- name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
+- block:
+ - name: New instance and don't wait for it to complete
+ ec2_instance:
+ name: "{{ resource_prefix }}-test-no-wait"
+ image_id: "{{ ec2_ami_image }}"
+ vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
+ tags:
+ TestId: "{{ resource_prefix }}"
+ wait: false
+ instance_type: "{{ ec2_instance_type }}"
+ register: in_test_vpc
-- name: New instance and don't wait for it to complete
- ec2_instance:
- name: "{{ resource_prefix }}-test-no-wait"
- image_id: "{{ ec2_ami_image[aws_region] }}"
- vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- tags:
- TestId: "{{ resource_prefix }}"
- wait: false
- instance_type: t2.micro
- <<: *aws_connection_info
- register: in_test_vpc
+ - assert:
+ that:
+ - in_test_vpc is not failed
+ - in_test_vpc is changed
+ - in_test_vpc.instances is not defined
+ - in_test_vpc.instance_ids is defined
+ - in_test_vpc.instance_ids | length > 0
-- assert:
- that:
- - in_test_vpc is not failed
- - in_test_vpc is changed
- - in_test_vpc.instances is not defined
- - in_test_vpc.instance_ids is defined
- - in_test_vpc.instance_ids | length > 0
+ - name: New instance and don't wait for it to complete ( check mode )
+ ec2_instance:
+ name: "{{ resource_prefix }}-test-no-wait-checkmode"
+ image_id: "{{ ec2_ami_image }}"
+ vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
+ tags:
+ TestId: "{{ resource_prefix }}"
+ wait: false
+ instance_type: "{{ ec2_instance_type }}"
+ check_mode: yes
-- name: New instance and don't wait for it to complete ( check mode )
- ec2_instance:
- name: "{{ resource_prefix }}-test-no-wait-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
- vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- tags:
- TestId: "{{ resource_prefix }}"
- wait: false
- instance_type: t2.micro
- <<: *aws_connection_info
- check_mode: yes
+ - name: Facts for ec2 test instance
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-no-wait"
+ register: real_instance_fact
+ until: real_instance_fact.instances | length > 0
+ retries: 10
-- name: Facts for ec2 test instance
- ec2_instance_info:
- filters:
- "tag:Name": "{{ resource_prefix }}-test-no-wait"
- <<: *aws_connection_info
- register: real_instance_fact
- until: real_instance_fact.instances | length > 0
- retries: 10
+ - name: Facts for checkmode ec2 test instance
+ ec2_instance_info:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-no-wait-checkmode"
+ register: checkmode_instance_fact
-- name: Facts for checkmode ec2 test instance
- ec2_instance_info:
- filters:
- "tag:Name": "{{ resource_prefix }}-test-no-wait-checkmode"
- <<: *aws_connection_info
- register: checkmode_instance_fact
+ - name: "Confirm whether the check mode is working normally."
+ assert:
+ that:
+ - "{{ real_instance_fact.instances | length }} > 0"
+ - "{{ checkmode_instance_fact.instances | length }} == 0"
-- name: "Confirm whether the check mode is working normally."
- assert:
- that:
- - "{{ real_instance_fact.instances | length }} > 0"
- - "{{ checkmode_instance_fact.instances | length }} == 0"
+ - name: Terminate instances
+ ec2_instance:
+ instance_ids: "{{ in_test_vpc.instance_ids }}"
+ state: absent
+
+ always:
+ - name: Terminate test-ebs-vols instances
+ ec2_instance:
+ filters:
+ "tag:Name": "{{ resource_prefix }}-test-no-wait-checkmode"
+ state: absent
+ wait: no
+ ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/main.yml b/test/integration/targets/ec2_instance/tasks/main.yml
index a7aec5e42e..852d895bdf 100644
--- a/test/integration/targets/ec2_instance/tasks/main.yml
+++ b/test/integration/targets/ec2_instance/tasks/main.yml
@@ -1,4 +1,11 @@
---
+# This test suite is currently marked "unsupported" because it takes too long to
+# run within the 'shippable' test environment.
+# If a test suite runs longer than around 15 minutes aws-terminator can start
+# pulling resources created at the start of the test out from under it.
+#
+# ###############################################################################
+#
# A Note about ec2 environment variable name preference:
# - EC2_URL -> AWS_URL
# - EC2_ACCESS_KEY -> AWS_ACCESS_KEY_ID -> AWS_ACCESS_KEY
@@ -6,46 +13,31 @@
# - EC2_REGION -> AWS_REGION
#
-- block:
-
- - set_fact:
- virtualenv: "{{ remote_tmp_dir }}/virtualenv"
- virtualenv_command: "{{ ansible_python_interpreter }} -m virtualenv"
-
- - set_fact:
- virtualenv_interpreter: "{{ virtualenv }}/bin/python"
-
- - pip:
- name: virtualenv
-
- - pip:
- name:
- - 'botocore<1.10.16'
- - boto3
- - coverage
- virtualenv: "{{ virtualenv }}"
- virtualenv_command: "{{ virtualenv_command }}"
- virtualenv_site_packages: no
-
- - include_tasks: version_fail.yml
+- name: Wrap up all tests and setup AWS credentials
+ module_defaults:
+ group/aws:
+ aws_access_key: "{{ aws_access_key }}"
+ aws_secret_key: "{{ aws_secret_key }}"
+ security_token: "{{ security_token | default(omit) }}"
+ region: "{{ aws_region }}"
+ block:
+
+ - name: Find AMI to use
+ ec2_ami_info:
+ owners: 'amazon'
+ filters:
+ name: '{{ ec2_ami_name }}'
+ register: ec2_amis
+ - name: Set fact with latest AMI
vars:
- ansible_python_interpreter: "{{ virtualenv_interpreter }}"
-
- - file:
- path: "{{ virtualenv }}"
- state: absent
-
- - pip:
- name:
- - 'botocore>=1.10.16'
- - boto3
- - coverage
- virtualenv: "{{ virtualenv }}"
- virtualenv_command: "{{ virtualenv_command }}"
- virtualenv_site_packages: no
+ latest_ami: '{{ ec2_amis.images | sort(attribute="creation_date") | last }}'
+ set_fact:
+ ec2_ami_image: '{{ latest_ami.image_id }}'
+ - include_tasks: version_fail_wrapper.yml
- include_tasks: env_setup.yml
+
- include_tasks: cpu_options.yml
- include_tasks: termination_protection.yml
- include_tasks: tags_and_vpc_settings.yml
diff --git a/test/integration/targets/ec2_instance/tasks/tags_and_vpc_settings.yml b/test/integration/targets/ec2_instance/tasks/tags_and_vpc_settings.yml
index 768981fde8..f56d6430d9 100644
--- a/test/integration/targets/ec2_instance/tasks/tags_and_vpc_settings.yml
+++ b/test/integration/targets/ec2_instance/tasks/tags_and_vpc_settings.yml
@@ -1,16 +1,8 @@
- block:
- - name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
- name: Make instance in the testing subnet created in the test VPC
ec2_instance:
name: "{{ resource_prefix }}-test-basic-vpc-create"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
user_data: |
#cloud-config
package_upgrade: true
@@ -22,15 +14,14 @@
network:
source_dest_check: false
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
wait: false
- <<: *aws_connection_info
register: in_test_vpc
- name: Make instance in the testing subnet created in the test VPC(check mode)
ec2_instance:
name: "{{ resource_prefix }}-test-basic-vpc-create-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
user_data: |
#cloud-config
package_upgrade: true
@@ -42,14 +33,13 @@
network:
source_dest_check: false
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
check_mode: yes
- name: Try to re-make the instance, hopefully this shows changed=False
ec2_instance:
name: "{{ resource_prefix }}-test-basic-vpc-create"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
user_data: |
#cloud-config
package_upgrade: true
@@ -59,8 +49,7 @@
Something: else
security_groups: "{{ sg.group_id }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
register: remake_in_test_vpc
- name: "Remaking the same instance resulted in no changes"
assert:
@@ -76,14 +65,12 @@
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-basic-vpc-create"
- <<: *aws_connection_info
register: presented_instance_fact
- name: "fact checkmode ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-basic-vpc-create-checkmode"
- <<: *aws_connection_info
register: checkmode_instance_fact
- name: "Confirm whether the check mode is working normally."
@@ -95,19 +82,17 @@
- name: Alter it by adding tags
ec2_instance:
name: "{{ resource_prefix }}-test-basic-vpc-create"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
Another: thing
security_groups: "{{ sg.group_id }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
register: add_another_tag
- ec2_instance_info:
instance_ids: "{{ add_another_tag.instance_ids }}"
- <<: *aws_connection_info
register: check_tags
- name: "Remaking the same instance resulted in no changes"
assert:
@@ -118,19 +103,17 @@
- name: Purge a tag
ec2_instance:
name: "{{ resource_prefix }}-test-basic-vpc-create"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
purge_tags: true
tags:
TestId: "{{ resource_prefix }}"
Another: thing
security_groups: "{{ sg.group_id }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
- ec2_instance_info:
instance_ids: "{{ add_another_tag.instance_ids }}"
- <<: *aws_connection_info
register: check_tags
- name: "Remaking the same instance resulted in no changes"
@@ -142,7 +125,7 @@
assert:
that:
- check_tags.instances[0].public_dns_name == ""
- - check_tags.instances[0].private_ip_address.startswith("10.22.33")
+ - check_tags.instances[0].private_ip_address.startswith(subnet_b_startswith)
- check_tags.instances[0].subnet_id == testing_subnet_b.subnet.id
- name: check that tags were applied
assert:
@@ -156,7 +139,6 @@
tag:TestId: "{{ resource_prefix }}"
state: absent
wait: false
- <<: *aws_connection_info
register: result
- assert:
that: result.changed
@@ -168,6 +150,5 @@
tag:TestId: "{{ resource_prefix }}"
state: absent
wait: false
- <<: *aws_connection_info
register: result
ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/termination_protection.yml b/test/integration/targets/ec2_instance/tasks/termination_protection.yml
index 10fcd73521..88ea2326bf 100644
--- a/test/integration/targets/ec2_instance/tasks/termination_protection.yml
+++ b/test/integration/targets/ec2_instance/tasks/termination_protection.yml
@@ -1,39 +1,28 @@
- block:
- - name: set connection information for all tasks
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: true
-
- name: Make termination-protected instance in the testing subnet created in the test VPC
ec2_instance:
name: "{{ resource_prefix }}-test-protected-instance-in-vpc"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
security_groups: "{{ sg.group_id }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
termination_protection: true
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
state: running
wait: yes
- <<: *aws_connection_info
register: in_test_vpc
- name: Make termination-protected instance in the testing subnet created in the test VPC(check mode)
ec2_instance:
name: "{{ resource_prefix }}-test-protected-instance-in-vpc-checkmode"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
security_groups: "{{ sg.group_id }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
termination_protection: true
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
check_mode: yes
- name: "fact presented ec2 instance"
@@ -41,14 +30,12 @@
filters:
"tag:Name": "{{ resource_prefix }}-test-protected-instance-in-vpc"
"instance-state-name": "running"
- <<: *aws_connection_info
register: presented_instance_fact
- name: "fact checkmode ec2 instance"
ec2_instance_info:
filters:
"tag:Name": "{{ resource_prefix }}-test-protected-instance-in-vpc-checkmode"
- <<: *aws_connection_info
register: checkmode_instance_fact
- name: "Confirm whether the check mode is working normally."
@@ -62,14 +49,13 @@
ec2_instance:
state: absent
name: "{{ resource_prefix }}-test-protected-instance-in-vpc"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
tags:
TestId: "{{ resource_prefix }}"
security_groups: "{{ sg.group_id }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
termination_protection: true
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
register: bad_terminate
ignore_errors: yes
- name: Cannot terminate protected instance
@@ -79,20 +65,18 @@
- name: Alter termination protection setting
ec2_instance:
name: "{{ resource_prefix }}-test-protected-instance-in-vpc"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
termination_protection: false
- instance_type: t2.micro
- <<: *aws_connection_info
+ instance_type: "{{ ec2_instance_type }}"
- name: Try to terminate the instance again (should work)
ec2_instance:
name: "{{ resource_prefix }}-test-protected-instance-in-vpc"
- image_id: "{{ ec2_ami_image[aws_region] }}"
+ image_id: "{{ ec2_ami_image }}"
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
- instance_type: t2.micro
+ instance_type: "{{ ec2_instance_type }}"
state: absent
wait: false
- <<: *aws_connection_info
register: terminate_results
- assert:
that: terminate_results is not failed
@@ -104,6 +88,5 @@
tag:TestId: "{{ resource_prefix }}"
state: absent
wait: false
- <<: *aws_connection_info
register: result
ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/version_fail.yml b/test/integration/targets/ec2_instance/tasks/version_fail.yml
index a5bc1b31aa..e69f66cc2f 100644
--- a/test/integration/targets/ec2_instance/tasks/version_fail.yml
+++ b/test/integration/targets/ec2_instance/tasks/version_fail.yml
@@ -1,23 +1,13 @@
- block:
- - name: set up aws connection info
- set_fact:
- aws_connection_info: &aws_connection_info
- aws_access_key: "{{ aws_access_key }}"
- aws_secret_key: "{{ aws_secret_key }}"
- security_token: "{{ security_token }}"
- region: "{{ aws_region }}"
- no_log: True
-
- name: create t3.nano with cpu options (fails gracefully)
ec2_instance:
state: present
name: "ansible-test-{{ resource_prefix | regex_search('([0-9]+)$') }}-ec2"
- image_id: "{{ ec2_ami_image[aws_region] }}"
- instance_type: t3.nano
+ image_id: "{{ ec2_ami_image }}"
+ instance_type: "t3.nano"
cpu_options:
core_count: 1
threads_per_core: 1
- <<: *aws_connection_info
register: ec2_instance_cpu_options_creation
ignore_errors: yes
@@ -32,5 +22,5 @@
ec2_instance:
state: absent
name: "ansible-test-{{ resource_prefix | regex_search('([0-9]+)$') }}-ec2"
- <<: *aws_connection_info
+ wait: no
ignore_errors: yes
diff --git a/test/integration/targets/ec2_instance/tasks/version_fail_wrapper.yml b/test/integration/targets/ec2_instance/tasks/version_fail_wrapper.yml
new file mode 100644
index 0000000000..b3ee7b8551
--- /dev/null
+++ b/test/integration/targets/ec2_instance/tasks/version_fail_wrapper.yml
@@ -0,0 +1,27 @@
+---
+- set_fact:
+ virtualenv: "{{ remote_tmp_dir }}/virtualenv"
+ virtualenv_command: "{{ ansible_python_interpreter }} -m virtualenv"
+
+- set_fact:
+ virtualenv_interpreter: "{{ virtualenv }}/bin/python"
+
+- pip:
+ name: virtualenv
+
+- pip:
+ name:
+ - 'botocore<1.10.16'
+ - boto3
+ - coverage
+ virtualenv: "{{ virtualenv }}"
+ virtualenv_command: "{{ virtualenv_command }}"
+ virtualenv_site_packages: no
+
+- include_tasks: version_fail.yml
+ vars:
+ ansible_python_interpreter: "{{ virtualenv_interpreter }}"
+
+- file:
+ path: "{{ virtualenv }}"
+ state: absent
diff --git a/test/sanity/ignore.txt b/test/sanity/ignore.txt
index 4e1ca07768..dbcd24c718 100644
--- a/test/sanity/ignore.txt
+++ b/test/sanity/ignore.txt
@@ -753,12 +753,6 @@ lib/ansible/modules/cloud/amazon/ec2_group.py validate-modules:undocumented-para
lib/ansible/modules/cloud/amazon/ec2_group.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/amazon/ec2_group.py validate-modules:doc-missing-type
lib/ansible/modules/cloud/amazon/ec2_group_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/amazon/ec2_instance.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/amazon/ec2_instance.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/amazon/ec2_instance.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/amazon/ec2_instance.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/amazon/ec2_instance_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/amazon/ec2_instance_info.py validate-modules:return-syntax-error
lib/ansible/modules/cloud/amazon/ec2_key.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/amazon/ec2_key.py validate-modules:doc-missing-type
lib/ansible/modules/cloud/amazon/ec2_launch_template.py validate-modules:nonexistent-parameter-documented