- 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: name: "{{ resource_prefix }}-test-eni-vpc" key_name: "{{ resource_prefix }}_test_key" network: interfaces: - id: "{{ eni_a.interface.id }}" image_id: "{{ ec2_ami_image[aws_region] }}" availability_zone: '{{ aws_region }}b' tags: TestId: "{{ resource_prefix }}" instance_type: t2.micro 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: that: - 'in_test_vpc_instance.instances.0.key_name == "{{ resource_prefix }}_test_key"' - '(in_test_vpc_instance.instances.0.network_interfaces | length) == 1' - name: Add a second interface ec2_instance: name: "{{ resource_prefix }}-test-eni-vpc" network: interfaces: - id: "{{ eni_a.interface.id }}" - id: "{{ eni_b.interface.id }}" image_id: "{{ ec2_ami_image[aws_region] }}" tags: TestId: "{{ resource_prefix }}" instance_type: t2.micro wait: false <<: *aws_connection_info register: add_interface until: add_interface is not failed ignore_errors: yes retries: 10 - name: Make instance in the testing subnet created in the test VPC(check mode) ec2_instance: name: "{{ resource_prefix }}-test-eni-vpc-checkmode" key_name: "{{ resource_prefix }}_test_key" network: interfaces: - id: "{{ eni_c.interface.id }}" image_id: "{{ ec2_ami_image[aws_region] }}" availability_zone: '{{ aws_region }}b' 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-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." assert: that: - "{{ 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 register: result ignore_errors: yes - ec2_key: name: "{{ resource_prefix }}_test_key" state: absent <<: *aws_connection_info ignore_errors: yes