
As by now you probably know, I’ve been working on Ansible a lot lately. In this tutorial we will go over how to terminate all AWS EC2 instances programmatically using Ansible script.
Before you go over this tutorial, make sure you have setup Ansible correctly on your laptop/desktop.
On Crunchify, we have more than 30 Ansible tutorials and those are getting so much love from readers/users.
Let’s get started:
Step-1:
Make sure you have setup ansible correctly on your site.
Step-2
Spawn few EC2 instances.
Step-3
Terminate newly spawned EC2 instances.
Create file crunchify_ec2_terminate.yml.
---
- hosts: localhost
connection: local
tasks:
- name: Terminate Instances
ec2_instance_facts:
region: us-east-2
register: ec2_info
- name: displaying output
debug: msg="{{item.instance_id}}"
with_items: "{{ec2_info.instances}}"
- name: terminate
ec2:
instance_ids: "{{item.instance_id}}"
region: us-east-2
state: absent
wait: yes
with_items: "{{ec2_info.instances}}"
ec2_instance_factsmodule gathers facts about ec2 instances in AWS.ec2module is use to create, terminate, start or stop an instance in ec2.
State:
- absent
- restarted
- running
- stopped

Execute command:
command: ansible-playbook -vvv crunchify_ec2_terminate.yml
Console Output:
bash-3.2$ ansible-playbook -vvv crunchify_ec2_terminate.yml
ansible-playbook 2.9.9
config file = /Users/crunchify/Documents/ansible.cfg
configured module search path = [u'/Users/crunchify/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /Library/Python/2.7/site-packages/ansible
executable location = /usr/local/bin/ansible-playbook
python version = 2.7.16 (default, Apr 17 2020, 18:29:03) [GCC 4.2.1 Compatible Apple LLVM 11.0.3 (clang-1103.0.29.20) (-macos10.15-objc-
Using /Users/crunchify/Documents/ansible.cfg as config file
host_list declined parsing /Users/crunchify/Documents/hosts as it did not pass its verify_file() method
script declined parsing /Users/crunchify/Documents/hosts as it did not pass its verify_file() method
auto declined parsing /Users/crunchify/Documents/hosts as it did not pass its verify_file() method
Parsed /Users/crunchify/Documents/hosts inventory source with ini plugin
[DEPRECATION WARNING]: ec2_instance_facts is kept for backwards compatibility but usage is discouraged. The module documentation details page may explain more
about this rationale.. This feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in
ansible.cfg.
PLAYBOOK: crunchify_ec2_terminate.yml **************************************************************************************************************************
1 plays in crunchify_ec2_terminate.yml
PLAY [localhost] ***********************************************************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************************************************
task path: /Users/crunchify/Documents/crunchify_ec2_terminate.yml:2
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: crunchify
<localhost> EXEC /bin/sh -c 'echo ~crunchify && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/crunchify/.ansible/tmp `"&& mkdir /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.11-41204-111388218507638 && echo ansible-tmp-1594496997.11-41204-111388218507638="` echo /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.11-41204-111388218507638 `" ) && sleep 0'
Using module file /Library/Python/2.7/site-packages/ansible/modules/system/setup.py
<localhost> PUT /Users/crunchify/.ansible/tmp/ansible-local-41195wpzOAR/tmpE3kiFK TO /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.11-41204-111388218507638/AnsiballZ_setup.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.11-41204-111388218507638/ /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.11-41204-111388218507638/AnsiballZ_setup.py && sleep 0'
<localhost> EXEC /bin/sh -c 'python /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.11-41204-111388218507638/AnsiballZ_setup.py && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.11-41204-111388218507638/ > /dev/null 2>&1 && sleep 0'
ok: [localhost]
META: ran handlers
TASK [Terminate Instances] *************************************************************************************************************************************
task path: /Users/crunchify/Documents/crunchify_ec2_terminate.yml:5
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: crunchify
<localhost> EXEC /bin/sh -c 'echo ~crunchify && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/crunchify/.ansible/tmp `"&& mkdir /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.87-41237-206622508678909 && echo ansible-tmp-1594496997.87-41237-206622508678909="` echo /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.87-41237-206622508678909 `" ) && sleep 0'
Using module file /Library/Python/2.7/site-packages/ansible/modules/cloud/amazon/_ec2_instance_facts.py
<localhost> PUT /Users/crunchify/.ansible/tmp/ansible-local-41195wpzOAR/tmpVucbR7 TO /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.87-41237-206622508678909/AnsiballZ__ec2_instance_facts.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.87-41237-206622508678909/ /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.87-41237-206622508678909/AnsiballZ__ec2_instance_facts.py && sleep 0'
<localhost> EXEC /bin/sh -c 'python /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.87-41237-206622508678909/AnsiballZ__ec2_instance_facts.py && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /Users/crunchify/.ansible/tmp/ansible-tmp-1594496997.87-41237-206622508678909/ > /dev/null 2>&1 && sleep 0'
[DEPRECATION WARNING]: The 'ec2_instance_facts' module has been renamed to 'ec2_instance_info'. This feature will be removed in version 2.13. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [localhost] => {
"changed": false,
"instances": [
{
"ami_launch_index": 1,
"architecture": "x86_64",
"block_device_mappings": [],
"capacity_reservation_specification": {
"capacity_reservation_preference": "open"
},
"client_token": "",
"cpu_options": {
"core_count": 2,
"threads_per_core": 2
},
"ebs_optimized": false,
"ena_support": true,
"hibernation_options": {
"configured": false
},
"hypervisor": "xen",
"image_id": "ami-92swq93023e0b9cb5",
"instance_id": "i-04d7c05d0d8af035e",
"instance_type": "m5ad.xlarge",
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41+00:00",
"metadata_options": {
"http_endpoint": "enabled",
"http_put_response_hop_limit": 1,
"http_tokens": "optional",
"state": "pending"
},
"monitoring": {
"state": "disabled"
},
"network_interfaces": [],
"placement": {
"availability_zone": "us-east-2a",
"group_name": "",
"tenancy": "default"
},
"private_dns_name": "",
"product_codes": [],
"public_dns_name": "",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"security_groups": [],
"state": {
"code": 48,
"name": "terminated"
},
"state_reason": {
"code": "Client.UserInitiatedShutdown",
"message": "Client.UserInitiatedShutdown: User initiated shutdown"
},
"state_transition_reason": "User initiated (2020-07-11 19:13:48 GMT)",
"tags": {
"Name": "crunchify_vms"
},
"virtualization_type": "hvm"
},
{
"ami_launch_index": 0,
"architecture": "x86_64",
"block_device_mappings": [],
"capacity_reservation_specification": {
"capacity_reservation_preference": "open"
},
"client_token": "",
"cpu_options": {
"core_count": 2,
"threads_per_core": 2
},
"ebs_optimized": false,
"ena_support": true,
"hibernation_options": {
"configured": false
},
"hypervisor": "xen",
"image_id": "ami-92swq93023e0b9cb5",
"instance_id": "i-0543671e6acaf2326",
"instance_type": "m5ad.xlarge",
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41+00:00",
"metadata_options": {
"http_endpoint": "enabled",
"http_put_response_hop_limit": 1,
"http_tokens": "optional",
"state": "pending"
},
"monitoring": {
"state": "disabled"
},
"network_interfaces": [],
"placement": {
"availability_zone": "us-east-2a",
"group_name": "",
"tenancy": "default"
},
"private_dns_name": "",
"product_codes": [],
"public_dns_name": "",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"security_groups": [],
"state": {
"code": 48,
"name": "terminated"
},
"state_reason": {
"code": "Client.UserInitiatedShutdown",
"message": "Client.UserInitiatedShutdown: User initiated shutdown"
},
"state_transition_reason": "User initiated (2020-07-11 19:14:20 GMT)",
"tags": {
"Name": "crunchify_vms"
},
"virtualization_type": "hvm"
}
],
"invocation": {
"module_args": {
"aws_access_key": null,
"aws_secret_key": null,
"debug_botocore_endpoint_logs": false,
"ec2_url": null,
"filters": {},
"instance_ids": [],
"profile": null,
"region": "us-east-2",
"security_token": null,
"validate_certs": true
}
}
}
TASK [displaying output] ****************************************************************************************************************************************
task path: /Users/crunchify/Documents/crunchify_ec2_terminate.yml:10
ok: [localhost] => (item={u'network_interfaces': [], u'root_device_type': u'ebs', u'private_dns_name': u'', u'tags': {u'Name': u'crunchify_vms'}, u'key_name': u'crunchifypem', u'image_id': u'ami-92swq93023e0b9cb5', u'cpu_options': {u'threads_per_core': 2, u'core_count': 2}, u'state_transition_reason': u'User initiated (2020-07-11 19:13:48 GMT)', u'hibernation_options': {u'configured': False}, u'capacity_reservation_specification': {u'capacity_reservation_preference': u'open'}, u'public_dns_name': u'', u'placement': {u'availability_zone': u'us-east-2a', u'tenancy': u'default', u'group_name': u''}, u'security_groups': [], u'block_device_mappings': [], u'metadata_options': {u'http_endpoint': u'enabled', u'state': u'pending', u'http_tokens': u'optional', u'http_put_response_hop_limit': 1}, u'state_reason': {u'message': u'Client.UserInitiatedShutdown: User initiated shutdown', u'code': u'Client.UserInitiatedShutdown'}, u'product_codes': [], u'monitoring': {u'state': u'disabled'}, u'ami_launch_index': 1, u'ena_support': True, u'ebs_optimized': False, u'launch_time': u'2020-07-11T19:09:41+00:00', u'instance_id': u'i-04d7c05d0d8af035e', u'instance_type': u'm5ad.xlarge', u'state': {u'code': 48, u'name': u'terminated'}, u'root_device_name': u'/dev/sda1', u'hypervisor': u'xen', u'client_token': u'', u'virtualization_type': u'hvm', u'architecture': u'x86_64'}) => {
"msg": "i-04d7c05d0d8af035e"
}
ok: [localhost] => (item={u'network_interfaces': [], u'root_device_type': u'ebs', u'private_dns_name': u'', u'tags': {u'Name': u'crunchify_vms'}, u'key_name': u'crunchifypem', u'image_id': u'ami-92swq93023e0b9cb5', u'cpu_options': {u'threads_per_core': 2, u'core_count': 2}, u'state_transition_reason': u'User initiated (2020-07-11 19:14:20 GMT)', u'hibernation_options': {u'configured': False}, u'capacity_reservation_specification': {u'capacity_reservation_preference': u'open'}, u'public_dns_name': u'', u'placement': {u'availability_zone': u'us-east-2a', u'tenancy': u'default', u'group_name': u''}, u'security_groups': [], u'block_device_mappings': [], u'metadata_options': {u'http_endpoint': u'enabled', u'state': u'pending', u'http_tokens': u'optional', u'http_put_response_hop_limit': 1}, u'state_reason': {u'message': u'Client.UserInitiatedShutdown: User initiated shutdown', u'code': u'Client.UserInitiatedShutdown'}, u'product_codes': [], u'monitoring': {u'state': u'disabled'}, u'ami_launch_index': 0, u'ena_support': True, u'ebs_optimized': False, u'launch_time': u'2020-07-11T19:09:41+00:00', u'instance_id': u'i-0543671e6acaf2326', u'instance_type': u'm5ad.xlarge', u'state': {u'code': 48, u'name': u'terminated'}, u'root_device_name': u'/dev/sda1', u'hypervisor': u'xen', u'client_token': u'', u'virtualization_type': u'hvm', u'architecture': u'x86_64'}) => {
"msg": "i-0543671e6acaf2326"
}
TASK [terminate] ***********************************************************************************************************************************************
task path: /Users/crunchify/Documents/crunchify_ec2_terminate.yml:14
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: crunchify
<localhost> EXEC /bin/sh -c 'echo ~crunchify && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/crunchify/.ansible/tmp `"&& mkdir /Users/crunchify/.ansible/tmp/ansible-tmp-1594496999.16-41259-76591811182344 && echo ansible-tmp-1594496999.16-41259-76591811182344="` echo /Users/crunchify/.ansible/tmp/ansible-tmp-1594496999.16-41259-76591811182344 `" ) && sleep 0'
Using module file /Library/Python/2.7/site-packages/ansible/modules/cloud/amazon/ec2.py
<localhost> PUT /Users/crunchify/.ansible/tmp/ansible-local-41195wpzOAR/tmpz2u32e TO /Users/crunchify/.ansible/tmp/ansible-tmp-1594496999.16-41259-76591811182344/AnsiballZ_ec2.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/crunchify/.ansible/tmp/ansible-tmp-1594496999.16-41259-76591811182344/ /Users/crunchify/.ansible/tmp/ansible-tmp-1594496999.16-41259-76591811182344/AnsiballZ_ec2.py && sleep 0'
<localhost> EXEC /bin/sh -c 'python /Users/crunchify/.ansible/tmp/ansible-tmp-1594496999.16-41259-76591811182344/AnsiballZ_ec2.py && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /Users/crunchify/.ansible/tmp/ansible-tmp-1594496999.16-41259-76591811182344/ > /dev/null 2>&1 && sleep 0'
<localhost> EXEC /bin/sh -c 'echo ~crunchify && sleep 0'
ok: [localhost] => (item={u'network_interfaces': [], u'root_device_type': u'ebs', u'private_dns_name': u'', u'tags': {u'Name': u'crunchify_vms'}, u'key_name': u'crunchifypem', u'image_id': u'ami-92swq93023e0b9cb5', u'cpu_options': {u'threads_per_core': 2, u'core_count': 2}, u'state_transition_reason': u'User initiated (2020-07-11 19:13:48 GMT)', u'hibernation_options': {u'configured': False}, u'capacity_reservation_specification': {u'capacity_reservation_preference': u'open'}, u'public_dns_name': u'', u'placement': {u'availability_zone': u'us-east-2a', u'tenancy': u'default', u'group_name': u''}, u'security_groups': [], u'block_device_mappings': [], u'metadata_options': {u'http_endpoint': u'enabled', u'state': u'pending', u'http_tokens': u'optional', u'http_put_response_hop_limit': 1}, u'state_reason': {u'message': u'Client.UserInitiatedShutdown: User initiated shutdown', u'code': u'Client.UserInitiatedShutdown'}, u'product_codes': [], u'monitoring': {u'state': u'disabled'}, u'ami_launch_index': 1, u'ena_support': True, u'ebs_optimized': False, u'launch_time': u'2020-07-11T19:09:41+00:00', u'instance_id': u'i-04d7c05d0d8af035e', u'instance_type': u'm5ad.4xlarge', u'state': {u'code': 48, u'name': u'terminated'}, u'root_device_name': u'/dev/sda1', u'hypervisor': u'xen', u'client_token': u'', u'virtualization_type': u'hvm', u'architecture': u'x86_64'}) => {
"ansible_loop_var": "item",
"changed": false,
"instance_ids": [],
"instances": [
{
"ami_launch_index": "1",
"architecture": "x86_64",
"block_device_mapping": {},
"dns_name": "",
"ebs_optimized": false,
"groups": {},
"hypervisor": "xen",
"id": "i-04d7c05d0d8af035e",
"image_id": "ami-92swq93023e0b9cb5",
"instance_type": "m5ad.4xlarge",
"kernel": null,
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41.000Z",
"placement": "us-east-2a",
"private_dns_name": "",
"private_ip": null,
"public_dns_name": "",
"public_ip": null,
"ramdisk": null,
"region": "us-east-2",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"state": "terminated",
"state_code": 48,
"tags": {
"Name": "crunchify_vms"
},
"tenancy": "default",
"virtualization_type": "hvm"
},
{
"ami_launch_index": "0",
"architecture": "x86_64",
"block_device_mapping": {},
"dns_name": "",
"ebs_optimized": false,
"groups": {},
"hypervisor": "xen",
"id": "i-0543671e6acaf2326",
"image_id": "ami-92swq93023e0b9cb5",
"instance_type": "m5ad.4xlarge",
"kernel": null,
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41.000Z",
"placement": "us-east-2a",
"private_dns_name": "",
"private_ip": null,
"public_dns_name": "",
"public_ip": null,
"ramdisk": null,
"region": "us-east-2",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"state": "terminated",
"state_code": 48,
"tags": {
"Name": "crunchify_vms"
},
"tenancy": "default",
"virtualization_type": "hvm"
}
],
"invocation": {
"module_args": {
"assign_public_ip": null,
"aws_access_key": null,
"aws_secret_key": null,
"count": 1,
"count_tag": null,
"debug_botocore_endpoint_logs": false,
"ebs_optimized": false,
"ec2_url": null,
"exact_count": null,
"group": null,
"group_id": null,
"id": null,
"image": null,
"instance_ids": [
"i-04d7c05d0d8af035e"
],
"instance_initiated_shutdown_behavior": "stop",
"instance_profile_name": null,
"instance_tags": null,
"instance_type": null,
"kernel": null,
"key_name": null,
"monitoring": false,
"network_interfaces": null,
"placement_group": null,
"private_ip": null,
"profile": null,
"ramdisk": null,
"region": "us-east-2",
"security_token": null,
"source_dest_check": null,
"spot_launch_group": null,
"spot_price": null,
"spot_type": "one-time",
"spot_wait_timeout": 600,
"state": "absent",
"tenancy": "default",
"termination_protection": null,
"user_data": null,
"validate_certs": true,
"volumes": null,
"vpc_subnet_id": null,
"wait": true,
"wait_timeout": 300,
"zone": null
}
},
"item": {
"ami_launch_index": 1,
"architecture": "x86_64",
"block_device_mappings": [],
"capacity_reservation_specification": {
"capacity_reservation_preference": "open"
},
"client_token": "",
"cpu_options": {
"core_count": 2,
"threads_per_core": 2
},
"ebs_optimized": false,
"ena_support": true,
"hibernation_options": {
"configured": false
},
"hypervisor": "xen",
"image_id": "ami-92swq93023e0b9cb5",
"instance_id": "i-04d7c05d0d8af035e",
"instance_type": "m5ad.4xlarge",
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41+00:00",
"metadata_options": {
"http_endpoint": "enabled",
"http_put_response_hop_limit": 1,
"http_tokens": "optional",
"state": "pending"
},
"monitoring": {
"state": "disabled"
},
"network_interfaces": [],
"placement": {
"availability_zone": "us-east-2a",
"group_name": "",
"tenancy": "default"
},
"private_dns_name": "",
"product_codes": [],
"public_dns_name": "",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"security_groups": [],
"state": {
"code": 48,
"name": "terminated"
},
"state_reason": {
"code": "Client.UserInitiatedShutdown",
"message": "Client.UserInitiatedShutdown: User initiated shutdown"
},
"state_transition_reason": "User initiated (2020-07-11 19:13:48 GMT)",
"tags": {
"Name": "crunchify_vms"
},
"virtualization_type": "hvm"
},
"tagged_instances": []
}
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/crunchify/.ansible/tmp `"&& mkdir /Users/crunchify/.ansible/tmp/ansible-tmp-1594497000.22-41259-67087912201719 && echo ansible-tmp-1594497000.22-41259-67087912201719="` echo /Users/crunchify/.ansible/tmp/ansible-tmp-1594497000.22-41259-67087912201719 `" ) && sleep 0'
Using module file /Library/Python/2.7/site-packages/ansible/modules/cloud/amazon/ec2.py
<localhost> PUT /Users/crunchify/.ansible/tmp/ansible-local-41195wpzOAR/tmpRP7zrl TO /Users/crunchify/.ansible/tmp/ansible-tmp-1594497000.22-41259-67087912201719/AnsiballZ_ec2.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/crunchify/.ansible/tmp/ansible-tmp-1594497000.22-41259-67087912201719/ /Users/crunchify/.ansible/tmp/ansible-tmp-1594497000.22-41259-67087912201719/AnsiballZ_ec2.py && sleep 0'
<localhost> EXEC /bin/sh -c 'python /Users/crunchify/.ansible/tmp/ansible-tmp-1594497000.22-41259-67087912201719/AnsiballZ_ec2.py && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /Users/crunchify/.ansible/tmp/ansible-tmp-1594497000.22-41259-67087912201719/ > /dev/null 2>&1 && sleep 0'
ok: [localhost] => (item={u'network_interfaces': [], u'root_device_type': u'ebs', u'private_dns_name': u'', u'tags': {u'Name': u'crunchify_vms'}, u'key_name': u'crunchifypem', u'image_id': u'ami-92swq93023e0b9cb5', u'cpu_options': {u'threads_per_core': 2, u'core_count': 2}, u'state_transition_reason': u'User initiated (2020-07-11 19:14:20 GMT)', u'hibernation_options': {u'configured': False}, u'capacity_reservation_specification': {u'capacity_reservation_preference': u'open'}, u'public_dns_name': u'', u'placement': {u'availability_zone': u'us-east-2a', u'tenancy': u'default', u'group_name': u''}, u'security_groups': [], u'block_device_mappings': [], u'metadata_options': {u'http_endpoint': u'enabled', u'state': u'pending', u'http_tokens': u'optional', u'http_put_response_hop_limit': 1}, u'state_reason': {u'message': u'Client.UserInitiatedShutdown: User initiated shutdown', u'code': u'Client.UserInitiatedShutdown'}, u'product_codes': [], u'monitoring': {u'state': u'disabled'}, u'ami_launch_index': 0, u'ena_support': True, u'ebs_optimized': False, u'launch_time': u'2020-07-11T19:09:41+00:00', u'instance_id': u'i-0543671e6acaf2326', u'instance_type': u'm5ad.4xlarge', u'state': {u'code': 48, u'name': u'terminated'}, u'root_device_name': u'/dev/sda1', u'hypervisor': u'xen', u'client_token': u'', u'virtualization_type': u'hvm', u'architecture': u'x86_64'}) => {
"ansible_loop_var": "item",
"changed": false,
"instance_ids": [],
"instances": [
{
"ami_launch_index": "1",
"architecture": "x86_64",
"block_device_mapping": {},
"dns_name": "",
"ebs_optimized": false,
"groups": {},
"hypervisor": "xen",
"id": "i-04d7c05d0d8af035e",
"image_id": "ami-92swq93023e0b9cb5",
"instance_type": "m5ad.4xlarge",
"kernel": null,
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41.000Z",
"placement": "us-east-2a",
"private_dns_name": "",
"private_ip": null,
"public_dns_name": "",
"public_ip": null,
"ramdisk": null,
"region": "us-east-2",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"state": "terminated",
"state_code": 48,
"tags": {
"Name": "crunchify_vms"
},
"tenancy": "default",
"virtualization_type": "hvm"
},
{
"ami_launch_index": "0",
"architecture": "x86_64",
"block_device_mapping": {},
"dns_name": "",
"ebs_optimized": false,
"groups": {},
"hypervisor": "xen",
"id": "i-0543671e6acaf2326",
"image_id": "ami-92swq93023e0b9cb5",
"instance_type": "m5ad.4xlarge",
"kernel": null,
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41.000Z",
"placement": "us-east-2a",
"private_dns_name": "",
"private_ip": null,
"public_dns_name": "",
"public_ip": null,
"ramdisk": null,
"region": "us-east-2",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"state": "terminated",
"state_code": 48,
"tags": {
"Name": "crunchify_vms"
},
"tenancy": "default",
"virtualization_type": "hvm"
}
],
"invocation": {
"module_args": {
"assign_public_ip": null,
"aws_access_key": null,
"aws_secret_key": null,
"count": 1,
"count_tag": null,
"debug_botocore_endpoint_logs": false,
"ebs_optimized": false,
"ec2_url": null,
"exact_count": null,
"group": null,
"group_id": null,
"id": null,
"image": null,
"instance_ids": [
"i-0543671e6acaf2326"
],
"instance_initiated_shutdown_behavior": "stop",
"instance_profile_name": null,
"instance_tags": null,
"instance_type": null,
"kernel": null,
"key_name": null,
"monitoring": false,
"network_interfaces": null,
"placement_group": null,
"private_ip": null,
"profile": null,
"ramdisk": null,
"region": "us-east-2",
"security_token": null,
"source_dest_check": null,
"spot_launch_group": null,
"spot_price": null,
"spot_type": "one-time",
"spot_wait_timeout": 600,
"state": "absent",
"tenancy": "default",
"termination_protection": null,
"user_data": null,
"validate_certs": true,
"volumes": null,
"vpc_subnet_id": null,
"wait": true,
"wait_timeout": 300,
"zone": null
}
},
"item": {
"ami_launch_index": 0,
"architecture": "x86_64",
"block_device_mappings": [],
"capacity_reservation_specification": {
"capacity_reservation_preference": "open"
},
"client_token": "",
"cpu_options": {
"core_count": 2,
"threads_per_core": 2
},
"ebs_optimized": false,
"ena_support": true,
"hibernation_options": {
"configured": false
},
"hypervisor": "xen",
"image_id": "ami-92swq93023e0b9cb5",
"instance_id": "i-0543671e6acaf2326",
"instance_type": "m5ad.4xlarge",
"key_name": "crunchifypem",
"launch_time": "2020-07-11T19:09:41+00:00",
"metadata_options": {
"http_endpoint": "enabled",
"http_put_response_hop_limit": 1,
"http_tokens": "optional",
"state": "pending"
},
"monitoring": {
"state": "disabled"
},
"network_interfaces": [],
"placement": {
"availability_zone": "us-east-2a",
"group_name": "",
"tenancy": "default"
},
"private_dns_name": "",
"product_codes": [],
"public_dns_name": "",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"security_groups": [],
"state": {
"code": 48,
"name": "terminated"
},
"state_reason": {
"code": "Client.UserInitiatedShutdown",
"message": "Client.UserInitiatedShutdown: User initiated shutdown"
},
"state_transition_reason": "User initiated (2020-07-11 19:14:20 GMT)",
"tags": {
"Name": "crunchify_vms"
},
"virtualization_type": "hvm"
},
"tagged_instances": []
}
META: ran handlers
META: ran handlers
PLAY RECAP *****************************************************************************************************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
bash-3.2$
Open Amazon EC2 Instance page:
Link: https://us-east-2.console.aws.amazon.com/ec2/v2/home?region=us-east-2#Instances:sort=instanceId

I hope this helps you terminate Amazon EC2 instances via Ansible.
