diff options
Diffstat (limited to 'test/integration/targets/ec2_ami/tasks/main.yml')
-rw-r--r-- | test/integration/targets/ec2_ami/tasks/main.yml | 462 |
1 files changed, 0 insertions, 462 deletions
diff --git a/test/integration/targets/ec2_ami/tasks/main.yml b/test/integration/targets/ec2_ami/tasks/main.yml deleted file mode 100644 index 2cb15b5da1..0000000000 --- a/test/integration/targets/ec2_ami/tasks/main.yml +++ /dev/null @@ -1,462 +0,0 @@ ---- -# tasks file for test_ec2_ami - -- block: - - # ============================================================ - - # SETUP: vpc, ec2 key pair, subnet, security group, ec2 instance, snapshot - - name: set aws_connection_info fact - set_fact: - aws_connection_info: &aws_connection_info - aws_region: '{{aws_region}}' - aws_access_key: '{{aws_access_key}}' - aws_secret_key: '{{aws_secret_key}}' - security_token: '{{security_token}}' - no_log: yes - - - name: create a VPC to work in - ec2_vpc_net: - cidr_block: 10.0.0.0/24 - state: present - name: '{{ ec2_ami_name }}_setup' - resource_tags: - Name: '{{ ec2_ami_name }}_setup' - <<: *aws_connection_info - register: setup_vpc - - - name: create a key pair to use for creating an ec2 instance - ec2_key: - name: '{{ ec2_ami_name }}_setup' - state: present - <<: *aws_connection_info - register: setup_key - - - name: create a subnet to use for creating an ec2 instance - ec2_vpc_subnet: - az: '{{ ec2_region }}a' - tags: '{{ ec2_ami_name }}_setup' - vpc_id: '{{ setup_vpc.vpc.id }}' - cidr: 10.0.0.0/24 - state: present - resource_tags: - Name: '{{ ec2_ami_name }}_setup' - <<: *aws_connection_info - register: setup_subnet - - - name: create a security group to use for creating an ec2 instance - ec2_group: - name: '{{ ec2_ami_name }}_setup' - description: 'created by Ansible integration tests' - state: present - vpc_id: '{{ setup_vpc.vpc.id }}' - <<: *aws_connection_info - register: setup_sg - - - name: provision ec2 instance to create an image - ec2: - key_name: '{{ setup_key.key.name }}' - instance_type: t2.micro - state: present - image: '{{ ec2_region_images[ec2_region] }}' - wait: yes - instance_tags: - '{{ec2_ami_name}}_instance_setup': 'integration_tests' - group_id: '{{ setup_sg.group_id }}' - vpc_subnet_id: '{{ setup_subnet.subnet.id }}' - <<: *aws_connection_info - register: setup_instance - - - name: take a snapshot of the instance to create an image - ec2_snapshot: - instance_id: '{{ setup_instance.instance_ids[0] }}' - device_name: /dev/xvda - state: present - <<: *aws_connection_info - register: setup_snapshot - - # ============================================================ - - - name: test clean failure if not providing image_id or name with state=present - ec2_ami: - instance_id: '{{ setup_instance.instance_ids[0] }}' - state: present - description: '{{ ec2_ami_description }}' - tags: - Name: '{{ ec2_ami_name }}_ami' - wait: yes - root_device_name: /dev/xvda - <<: *aws_connection_info - register: result - ignore_errors: yes - - - name: assert error message is helpful - assert: - that: - - result.failed - - "result.msg == 'one of the following is required: name, image_id'" - - # ============================================================ - - - name: create an image from the instance - ec2_ami: - instance_id: '{{ setup_instance.instance_ids[0] }}' - state: present - name: '{{ ec2_ami_name }}_ami' - description: '{{ ec2_ami_description }}' - tags: - Name: '{{ ec2_ami_name }}_ami' - wait: yes - root_device_name: /dev/xvda - <<: *aws_connection_info - register: result - - - name: set image id fact for deletion later - set_fact: - ec2_ami_image_id: "{{ result.image_id }}" - - - name: assert that image has been created - assert: - that: - - "result.changed" - - "result.image_id.startswith('ami-')" - - "'Name' in result.tags and result.tags.Name == ec2_ami_name + '_ami'" - - # ============================================================ - - - name: gather facts about the image created - ec2_ami_info: - image_ids: '{{ ec2_ami_image_id }}' - <<: *aws_connection_info - register: ami_facts_result - ignore_errors: true - - - name: assert that the right image was found - assert: - that: - - "ami_facts_result.images[0].image_id == ec2_ami_image_id" - - # ============================================================ - - - name: delete the image - ec2_ami: - instance_id: '{{ setup_instance.instance_ids[0] }}' - state: absent - delete_snapshot: yes - name: '{{ ec2_ami_name }}_ami' - description: '{{ ec2_ami_description }}' - image_id: '{{ result.image_id }}' - tags: - Name: '{{ ec2_ami_name }}_ami' - wait: yes - <<: *aws_connection_info - ignore_errors: true - register: result - - - name: assert that the image has been deleted - assert: - that: - - "result.changed" - - "'image_id' not in result" - - "result.snapshots_deleted" - - # ============================================================ - - - name: test removing an ami if no image ID is provided (expected failed=true) - ec2_ami: - state: absent - <<: *aws_connection_info - register: result - ignore_errors: yes - - - name: assert that an image ID is required - assert: - that: - - "result.failed" - - "result.msg == 'state is absent but all of the following are missing: image_id'" - - # ============================================================ - - - name: create an image from the snapshot - ec2_ami: - name: '{{ ec2_ami_name }}_ami' - description: '{{ ec2_ami_description }}' - state: present - launch_permissions: - user_ids: [] - tags: - Name: '{{ ec2_ami_name }}_ami' - root_device_name: /dev/xvda - device_mapping: - - device_name: /dev/xvda - volume_type: gp2 - size: 8 - delete_on_termination: true - snapshot_id: '{{ setup_snapshot.snapshot_id }}' - <<: *aws_connection_info - register: result - ignore_errors: true - - - name: set image id fact for deletion later - set_fact: - ec2_ami_image_id: "{{ result.image_id }}" - ec2_ami_snapshot: "{{ result.block_device_mapping['/dev/xvda'].snapshot_id }}" - - - name: assert a new ami has been created - assert: - that: - - "result.changed" - - "result.image_id.startswith('ami-')" - - # ============================================================ - - - name: test default launch permissions idempotence - ec2_ami: - description: '{{ ec2_ami_description }}' - state: present - name: '{{ ec2_ami_name }}_ami' - tags: - Name: '{{ ec2_ami_name }}_ami' - root_device_name: /dev/xvda - image_id: '{{ result.image_id }}' - launch_permissions: - user_ids: [] - device_mapping: - - device_name: /dev/xvda - volume_type: gp2 - size: 8 - delete_on_termination: true - snapshot_id: '{{ setup_snapshot.snapshot_id }}' - <<: *aws_connection_info - register: result - - - name: assert a new ami has not been created - assert: - that: - - "not result.changed" - - "result.image_id.startswith('ami-')" - - # ============================================================ - - - name: add a tag to the AMI - ec2_ami: - state: present - description: '{{ ec2_ami_description }}' - image_id: '{{ result.image_id }}' - name: '{{ ec2_ami_name }}_ami' - tags: - New: Tag - <<: *aws_connection_info - register: result - - - name: assert a tag was added - assert: - that: - - "'Name' in result.tags and result.tags.Name == ec2_ami_name + '_ami'" - - "'New' in result.tags and result.tags.New == 'Tag'" - - - name: use purge_tags to remove a tag from the AMI - ec2_ami: - state: present - description: '{{ ec2_ami_description }}' - image_id: '{{ result.image_id }}' - name: '{{ ec2_ami_name }}_ami' - tags: - New: Tag - purge_tags: yes - <<: *aws_connection_info - register: result - - - name: assert a tag was removed - assert: - that: - - "'Name' not in result.tags" - - "'New' in result.tags and result.tags.New == 'Tag'" - - # ============================================================ - - - name: update AMI launch permissions - ec2_ami: - state: present - image_id: '{{ result.image_id }}' - description: '{{ ec2_ami_description }}' - tags: - Name: '{{ ec2_ami_name }}_ami' - launch_permissions: - group_names: ['all'] - <<: *aws_connection_info - register: result - - - name: assert launch permissions were updated - assert: - that: - - "result.changed" - - # ============================================================ - - - name: modify the AMI description - ec2_ami: - state: present - image_id: '{{ result.image_id }}' - name: '{{ ec2_ami_name }}_ami' - description: '{{ ec2_ami_description }}CHANGED' - tags: - Name: '{{ ec2_ami_name }}_ami' - launch_permissions: - group_names: ['all'] - <<: *aws_connection_info - register: result - - - name: assert the description changed - assert: - that: - - "result.changed" - - # ============================================================ - - - name: remove public launch permissions - ec2_ami: - state: present - image_id: '{{ result.image_id }}' - name: '{{ ec2_ami_name }}_ami' - tags: - Name: '{{ ec2_ami_name }}_ami' - launch_permissions: - group_names: [] - <<: *aws_connection_info - register: result - - - name: assert launch permissions were updated - assert: - that: - - "result.changed" - - # ============================================================ - - - name: delete ami without deleting the snapshot (default is not to delete) - ec2_ami: - instance_id: '{{ setup_instance.instance_ids[0] }}' - state: absent - name: '{{ ec2_ami_name }}_ami' - image_id: '{{ ec2_ami_image_id }}' - tags: - Name: '{{ ec2_ami_name }}_ami' - wait: yes - <<: *aws_connection_info - ignore_errors: true - register: result - - - name: assert that the image has been deleted - assert: - that: - - "result.changed" - - "'image_id' not in result" - - - name: ensure the snapshot still exists - ec2_snapshot_info: - snapshot_ids: - - '{{ ec2_ami_snapshot }}' - <<: *aws_connection_info - register: snapshot_result - - - name: assert the snapshot wasn't deleted - assert: - that: - - "snapshot_result.snapshots[0].snapshot_id == ec2_ami_snapshot" - - - name: delete ami for a second time - ec2_ami: - instance_id: '{{ setup_instance.instance_ids[0] }}' - state: absent - name: '{{ ec2_ami_name }}_ami' - image_id: '{{ ec2_ami_image_id }}' - tags: - Name: '{{ ec2_ami_name }}_ami' - wait: yes - <<: *aws_connection_info - register: result - - - name: assert that image does not exist - assert: - that: - - not result.changed - - not result.failed - - - # ============================================================ - - always: - - # ============================================================ - - # TEAR DOWN: snapshot, ec2 instance, ec2 key pair, security group, vpc - - name: Announce teardown start - debug: - msg: "***** TESTING COMPLETE. COMMENCE TEARDOWN *****" - - - name: delete ami - ec2_ami: - state: absent - image_id: "{{ ec2_ami_image_id }}" - name: '{{ ec2_ami_name }}_ami' - wait: yes - <<: *aws_connection_info - ignore_errors: yes - - - name: remove setup snapshot of ec2 instance - ec2_snapshot: - state: absent - snapshot_id: '{{ setup_snapshot.snapshot_id }}' - <<: *aws_connection_info - ignore_errors: yes - - - name: remove setup ec2 instance - ec2: - instance_type: t2.micro - instance_ids: '{{ setup_instance.instance_ids }}' - state: absent - wait: yes - instance_tags: - '{{ec2_ami_name}}_instance_setup': 'integration_tests' - group_id: '{{ setup_sg.group_id }}' - vpc_subnet_id: '{{ setup_subnet.subnet.id }}' - <<: *aws_connection_info - ignore_errors: yes - - - name: remove setup keypair - ec2_key: - name: '{{ec2_ami_name}}_setup' - state: absent - <<: *aws_connection_info - ignore_errors: yes - - - name: remove setup security group - ec2_group: - name: '{{ ec2_ami_name }}_setup' - description: 'created by Ansible integration tests' - state: absent - vpc_id: '{{ setup_vpc.vpc.id }}' - <<: *aws_connection_info - ignore_errors: yes - - - name: remove setup subnet - ec2_vpc_subnet: - az: '{{ ec2_region }}a' - tags: '{{ec2_ami_name}}_setup' - vpc_id: '{{ setup_vpc.vpc.id }}' - cidr: 10.0.0.0/24 - state: absent - resource_tags: - Name: '{{ ec2_ami_name }}_setup' - <<: *aws_connection_info - ignore_errors: yes - - - name: remove setup VPC - ec2_vpc_net: - cidr_block: 10.0.0.0/24 - state: absent - name: '{{ ec2_ami_name }}_setup' - resource_tags: - Name: '{{ ec2_ami_name }}_setup' - <<: *aws_connection_info - ignore_errors: yes |