mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-27 04:41:26 -07:00
[AWS] Support check mode in aws ec2_instance module (#46774)
* fix checkmode * Added checking test to existing test playbook * Added test for check mode
This commit is contained in:
parent
81640a2c67
commit
1cce11b39c
10 changed files with 502 additions and 0 deletions
|
@ -1112,6 +1112,11 @@ def await_instances(ids, state='OK'):
|
||||||
if not module.params.get('wait', True):
|
if not module.params.get('wait', True):
|
||||||
# the user asked not to wait for anything
|
# the user asked not to wait for anything
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if module.check_mode:
|
||||||
|
# In check mode, there is no change even if you wait.
|
||||||
|
return
|
||||||
|
|
||||||
state_opts = {
|
state_opts = {
|
||||||
'OK': 'instance_status_ok',
|
'OK': 'instance_status_ok',
|
||||||
'STOPPED': 'instance_stopped',
|
'STOPPED': 'instance_stopped',
|
||||||
|
@ -1344,6 +1349,10 @@ def change_instance_state(filters, desired_state, ec2=None):
|
||||||
for inst in instances:
|
for inst in instances:
|
||||||
try:
|
try:
|
||||||
if desired_state == 'TERMINATED':
|
if desired_state == 'TERMINATED':
|
||||||
|
if module.check_mode:
|
||||||
|
changed.add(inst['InstanceId'])
|
||||||
|
continue
|
||||||
|
|
||||||
# TODO use a client-token to prevent double-sends of these start/stop/terminate commands
|
# TODO use a client-token to prevent double-sends of these start/stop/terminate commands
|
||||||
# https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html
|
# https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html
|
||||||
resp = ec2.terminate_instances(InstanceIds=[inst['InstanceId']])
|
resp = ec2.terminate_instances(InstanceIds=[inst['InstanceId']])
|
||||||
|
@ -1352,9 +1361,18 @@ def change_instance_state(filters, desired_state, ec2=None):
|
||||||
if inst['State']['Name'] == 'stopping':
|
if inst['State']['Name'] == 'stopping':
|
||||||
unchanged.add(inst['InstanceId'])
|
unchanged.add(inst['InstanceId'])
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if module.check_mode:
|
||||||
|
changed.add(inst['InstanceId'])
|
||||||
|
continue
|
||||||
|
|
||||||
resp = ec2.stop_instances(InstanceIds=[inst['InstanceId']])
|
resp = ec2.stop_instances(InstanceIds=[inst['InstanceId']])
|
||||||
[changed.add(i['InstanceId']) for i in resp['StoppingInstances']]
|
[changed.add(i['InstanceId']) for i in resp['StoppingInstances']]
|
||||||
if desired_state == 'RUNNING':
|
if desired_state == 'RUNNING':
|
||||||
|
if module.check_mode:
|
||||||
|
changed.add(inst['InstanceId'])
|
||||||
|
continue
|
||||||
|
|
||||||
resp = ec2.start_instances(InstanceIds=[inst['InstanceId']])
|
resp = ec2.start_instances(InstanceIds=[inst['InstanceId']])
|
||||||
[changed.add(i['InstanceId']) for i in resp['StartingInstances']]
|
[changed.add(i['InstanceId']) for i in resp['StartingInstances']]
|
||||||
except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError):
|
except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError):
|
||||||
|
@ -1423,6 +1441,12 @@ def ensure_present(existing_matches, changed, ec2, state):
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
instance_spec = build_run_instance_spec(module.params)
|
instance_spec = build_run_instance_spec(module.params)
|
||||||
|
# If check mode is enabled,suspend 'ensure function'.
|
||||||
|
if module.check_mode:
|
||||||
|
module.exit_json(
|
||||||
|
changed=True,
|
||||||
|
spec=instance_spec,
|
||||||
|
)
|
||||||
instance_response = run_instances(ec2, **instance_spec)
|
instance_response = run_instances(ec2, **instance_spec)
|
||||||
instances = instance_response['Instances']
|
instances = instance_response['Instances']
|
||||||
instance_ids = [i['InstanceId'] for i in instances]
|
instance_ids = [i['InstanceId'] for i in instances]
|
||||||
|
|
|
@ -32,3 +32,45 @@
|
||||||
- in_test_vpc.instances[0].block_device_mappings[0]
|
- in_test_vpc.instances[0].block_device_mappings[0]
|
||||||
- in_test_vpc.instances[0].block_device_mappings[1]
|
- in_test_vpc.instances[0].block_device_mappings[1]
|
||||||
- in_test_vpc.instances[0].block_device_mappings[1].device_name == '/dev/sdb'
|
- in_test_vpc.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[aws_region] }}"
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
- 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_facts:
|
||||||
|
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_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-ebs-vols-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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"
|
||||||
|
|
|
@ -0,0 +1,187 @@
|
||||||
|
- 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] }}"
|
||||||
|
security_groups: "{{ sg.group_id }}"
|
||||||
|
instance_type: t2.micro
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: instance_creation
|
||||||
|
|
||||||
|
- name: Make basic instance(check mode)
|
||||||
|
ec2_instance:
|
||||||
|
name: "{{ resource_prefix }}-checkmode-comparison-checkmode"
|
||||||
|
image_id: "{{ ec2_ami_image[aws_region] }}"
|
||||||
|
security_groups: "{{ sg.group_id }}"
|
||||||
|
instance_type: t2.micro
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_c.subnet.id }}"
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
<<: *aws_connection_info
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- name: fact presented ec2 instance
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: presented_instance_fact
|
||||||
|
|
||||||
|
- name: fact checkmode ec2 instance
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-checkmode-comparison-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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: Stop instance in check mode.
|
||||||
|
ec2_instance:
|
||||||
|
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_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: confirm_checkmode_stopinstance_fact
|
||||||
|
|
||||||
|
- name: Verify that it was not stopped.
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- '"{{ confirm_checkmode_stopinstance_fact.instances[0].state.name }}" != "stopped"'
|
||||||
|
|
||||||
|
- name: Stop instance in normaly.
|
||||||
|
ec2_instance:
|
||||||
|
name: "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
state: stopped
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
|
||||||
|
- name: fact stopped ec2 instance
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: confirm_stopinstance_fact
|
||||||
|
|
||||||
|
- name: Verify that it was stopped.
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- '"{{ confirm_stopinstance_fact.instances[0].state.name }}" == "stopped"'
|
||||||
|
|
||||||
|
- name: Running instance in check mode.
|
||||||
|
ec2_instance:
|
||||||
|
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_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: confirm_checkmode_runninginstance_fact
|
||||||
|
|
||||||
|
- name: Verify that it was not running.
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- '"{{ confirm_checkmode_runninginstance_fact.instances[0].state.name }}" != "running"'
|
||||||
|
|
||||||
|
- name: Running instance in normaly.
|
||||||
|
ec2_instance:
|
||||||
|
name: "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
state: running
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
|
||||||
|
- name: fact ec2 instance.
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: confirm_runninginstance_fact
|
||||||
|
|
||||||
|
- name: Verify that it was running.
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- '"{{ confirm_runninginstance_fact.instances[0].state.name }}" == "running"'
|
||||||
|
|
||||||
|
- name: Terminate instance in check mode.
|
||||||
|
ec2_instance:
|
||||||
|
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_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: confirm_checkmode_terminatedinstance_fact
|
||||||
|
|
||||||
|
- name: Verify that it was not terminated,
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- '"{{ confirm_checkmode_terminatedinstance_fact.instances[0].state.name }}" != "terminated"'
|
||||||
|
|
||||||
|
- name: Terminate instance in check mode.
|
||||||
|
ec2_instance:
|
||||||
|
name: "{{ resource_prefix }}-checkmode-comparison"
|
||||||
|
state: absent
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
|
||||||
|
- name: fact ec2 instance
|
||||||
|
ec2_instance_facts:
|
||||||
|
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
|
||||||
|
register: removed
|
||||||
|
until: removed is not failed
|
||||||
|
ignore_errors: yes
|
||||||
|
retries: 10
|
|
@ -58,3 +58,43 @@
|
||||||
that:
|
that:
|
||||||
- cpu_options_update is success
|
- cpu_options_update is success
|
||||||
- cpu_options_update is not changed
|
- cpu_options_update is not changed
|
||||||
|
|
||||||
|
- name: create c4.large instance with cpu_options(check mode)
|
||||||
|
ec2_instance:
|
||||||
|
name: "{{ resource_prefix }}-test-c4large-1-threads-per-core-checkmode"
|
||||||
|
image_id: "{{ ec2_ami_image[aws_region] }}"
|
||||||
|
tags:
|
||||||
|
TestId: "{{ resource_prefix }}"
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_a.subnet.id }}"
|
||||||
|
instance_type: c4.large
|
||||||
|
cpu_options:
|
||||||
|
core_count: 1
|
||||||
|
threads_per_core: 1
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
<<: *aws_connection_info
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- name: "fact presented ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-c4large-1-threads-per-core"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: presented_instance_fact
|
||||||
|
|
||||||
|
- name: "fact checkmode ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-c4large-1-threads-per-core-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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"
|
||||||
|
|
|
@ -20,6 +20,44 @@
|
||||||
delete_on_termination: true
|
delete_on_termination: true
|
||||||
<<: *aws_connection_info
|
<<: *aws_connection_info
|
||||||
register: in_default_vpc
|
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] }}"
|
||||||
|
tags:
|
||||||
|
TestId: "{{ resource_prefix }}"
|
||||||
|
security_groups: "{{ sg.group_id }}"
|
||||||
|
instance_type: t2.micro
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
<<: *aws_connection_info
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- name: "fact presented ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-default-vpc"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: presented_instance_fact
|
||||||
|
|
||||||
|
- name: "fact checkmode ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-default-vpc-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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: Terminate instance
|
- name: Terminate instance
|
||||||
ec2:
|
ec2:
|
||||||
instance_ids: "{{ in_default_vpc.instance_ids }}"
|
instance_ids: "{{ in_default_vpc.instance_ids }}"
|
||||||
|
|
|
@ -21,6 +21,13 @@
|
||||||
- "{{ sg.group_id }}"
|
- "{{ sg.group_id }}"
|
||||||
<<: *aws_connection_info
|
<<: *aws_connection_info
|
||||||
register: eni_b
|
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:
|
- ec2_key:
|
||||||
name: "{{ resource_prefix }}_test_key"
|
name: "{{ resource_prefix }}_test_key"
|
||||||
|
@ -63,6 +70,47 @@
|
||||||
instance_type: t2.micro
|
instance_type: t2.micro
|
||||||
<<: *aws_connection_info
|
<<: *aws_connection_info
|
||||||
|
|
||||||
|
- 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 }}"
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
instance_type: t2.micro
|
||||||
|
<<: *aws_connection_info
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- name: "fact presented ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-eni-vpc"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: presented_instance_fact
|
||||||
|
|
||||||
|
- name: "fact checkmode ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-eni-vpc-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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
|
- name: Terminate instance
|
||||||
ec2_instance:
|
ec2_instance:
|
||||||
filters:
|
filters:
|
||||||
|
@ -94,3 +142,4 @@
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ eni_a.interface.id }}"
|
- "{{ eni_a.interface.id }}"
|
||||||
- "{{ eni_b.interface.id }}"
|
- "{{ eni_b.interface.id }}"
|
||||||
|
- "{{ eni_c.interface.id }}"
|
||||||
|
|
|
@ -48,6 +48,42 @@
|
||||||
that:
|
that:
|
||||||
- 'instance_with_role.instances[0].iam_instance_profile.arn == iam_role.arn.replace(":role/", ":instance-profile/")'
|
- 'instance_with_role.instances[0].iam_instance_profile.arn == iam_role.arn.replace(":role/", ":instance-profile/")'
|
||||||
|
|
||||||
|
- 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] }}"
|
||||||
|
security_groups: "{{ sg.group_id }}"
|
||||||
|
instance_type: t2.micro
|
||||||
|
instance_role: "{{ resource_prefix }}-test-policy"
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
<<: *aws_connection_info
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- name: "fact presented ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-instance-role"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: presented_instance_fact
|
||||||
|
|
||||||
|
- name: "fact checkmode ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-instance-role-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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: Update instance with new instance_role
|
- name: Update instance with new instance_role
|
||||||
ec2_instance:
|
ec2_instance:
|
||||||
name: "{{ resource_prefix }}-test-instance-role"
|
name: "{{ resource_prefix }}-test-instance-role"
|
||||||
|
|
|
@ -96,6 +96,7 @@
|
||||||
- include_tasks: block_devices.yml
|
- include_tasks: block_devices.yml
|
||||||
- include_tasks: default_vpc_tests.yml
|
- include_tasks: default_vpc_tests.yml
|
||||||
- include_tasks: iam_instance_role.yml
|
- include_tasks: iam_instance_role.yml
|
||||||
|
- include_tasks: checkmode_tests.yml
|
||||||
|
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
|
@ -29,6 +29,29 @@
|
||||||
<<: *aws_connection_info
|
<<: *aws_connection_info
|
||||||
register: in_test_vpc
|
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] }}"
|
||||||
|
user_data: |
|
||||||
|
#cloud-config
|
||||||
|
package_upgrade: true
|
||||||
|
package_update: true
|
||||||
|
tags:
|
||||||
|
TestId: "{{ resource_prefix }}"
|
||||||
|
Something: else
|
||||||
|
security_groups: "{{ sg.group_id }}"
|
||||||
|
network:
|
||||||
|
source_dest_check: false
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
|
||||||
|
instance_type: t2.micro
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
<<: *aws_connection_info
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
- name: Try to re-make the instance, hopefully this shows changed=False
|
- name: Try to re-make the instance, hopefully this shows changed=False
|
||||||
ec2_instance:
|
ec2_instance:
|
||||||
name: "{{ resource_prefix }}-test-basic-vpc-create"
|
name: "{{ resource_prefix }}-test-basic-vpc-create"
|
||||||
|
@ -55,6 +78,28 @@
|
||||||
assert:
|
assert:
|
||||||
that: 'not remake_in_test_vpc.instances[0].source_dest_check'
|
that: 'not remake_in_test_vpc.instances[0].source_dest_check'
|
||||||
|
|
||||||
|
- name: "fact presented ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-basic-vpc-create"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *aws_connection_info
|
||||||
|
register: presented_instance_fact
|
||||||
|
|
||||||
|
- name: "fact checkmode ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-basic-vpc-create-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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: Alter it by adding tags
|
- name: Alter it by adding tags
|
||||||
ec2_instance:
|
ec2_instance:
|
||||||
name: "{{ resource_prefix }}-test-basic-vpc-create"
|
name: "{{ resource_prefix }}-test-basic-vpc-create"
|
||||||
|
|
|
@ -22,6 +22,46 @@
|
||||||
delete_on_termination: true
|
delete_on_termination: true
|
||||||
<<: *aws_connection_info
|
<<: *aws_connection_info
|
||||||
register: in_test_vpc
|
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] }}"
|
||||||
|
tags:
|
||||||
|
TestId: "{{ resource_prefix }}"
|
||||||
|
security_groups: "{{ sg.group_id }}"
|
||||||
|
vpc_subnet_id: "{{ testing_subnet_b.subnet.id }}"
|
||||||
|
termination_protection: true
|
||||||
|
instance_type: t2.micro
|
||||||
|
volumes:
|
||||||
|
- device_name: /dev/sda1
|
||||||
|
ebs:
|
||||||
|
delete_on_termination: true
|
||||||
|
<<: *aws_connection_info
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- name: "fact presented ec2 instance"
|
||||||
|
ec2_instance_facts:
|
||||||
|
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_facts:
|
||||||
|
filters:
|
||||||
|
"tag:Name": "{{ resource_prefix }}-test-protected-instance-in-vpc-checkmode"
|
||||||
|
"instance-state-name": "running"
|
||||||
|
<<: *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: Try to terminate the instance
|
- name: Try to terminate the instance
|
||||||
ec2_instance:
|
ec2_instance:
|
||||||
state: absent
|
state: absent
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue