Search for AWS EC2 AMI ID by Region - Ansible module ec2_ami_info
By Luca Berton · Published 2024-01-01 · Category: troubleshooting
How to automate the search of an AWS EC2 machine AMI ID running the operating system RHEL-8.3.0 in the region \"us-east-1\" using Ansible Playbook.

How to Search for EC2 AMI ID by AWS Region with Ansible?
See also: Ansible AWS EC2: Automate Ubuntu Instance Creation & Data Collection
Ansible Search for EC2 AMI ID by AWS Region
amazon.aws.ec2_ami_info
- Gather information about ec2 AMIs
ec2_ami_info.
The full name is amazon.aws.ec2_ami_info, which means that is part of the collection of modules to interact with AWS.
The module's purpose is to gather information about ec2 AMIs.
Parameters
- filters _dictionary_ - filter terms
name: "RHEL-8.3.0_HVM-*-x86_64-*Hourly*"
region: "us-east-1"The following parameters are useful in order to Search for EC2 AMI ID by AWS Region using the module ec2_ami_info.
The only parameter needed is the filters and specify the filters keys and values.
For example, let's search for Red Hat Enterprise Linux machines version 8.3.0 running on HVM infrastructure, architecture x86_64 Hourly paid.
See also: Configuring Ansible for AWS: Setup Guide & Playbook
Links
Playbook
How to Search for EC2 AMI ID by AWS Region with Ansible.
code
---
- name: AMI search
hosts: localhost
become: false
gather_facts: false
vars:
aws_region: "us-east-1"
aws_name: "RHEL-8.3.0_HVM-*-x86_64-*Hourly*"
tasks:
- name: search for AMI
amazon.aws.ec2_ami_info:
filters:
name: "{{ aws_name }}"
region: "{{ aws_region }}"
register: ami_found
- name: print AMI
ansible.builtin.debug:
var: ami_foundexecution
$ ansible-playbook ami_search.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'
PLAY [AMI search] *********************************************************************************
TASK [search for existing AMI] ********************************************************************
ok: [localhost]
TASK [debug] **************************************************************************************
ok: [localhost] => {
"ami_found": {
"changed": false,
"failed": false,
"images": [
{
"architecture": "x86_64",
"block_device_mappings": [
{
"device_name": "/dev/sda1",
"ebs": {
"delete_on_termination": true,
"encrypted": false,
"snapshot_id": "snap-03f2e24f30f580353",
"volume_size": 10,
"volume_type": "gp2"
}
}
],
"creation_date": "2020-11-02T11:01:38.000Z",
"deprecation_time": "2022-11-02T11:01:38.000Z",
"description": "Provided by Red Hat, Inc.",
"ena_support": true,
"hypervisor": "xen",
"image_id": "ami-096fda3c22c1c990a",
"image_location": "309956199498/RHEL-8.3.0_HVM-20201031-x86_64-0-Hourly2-GP2",
"image_type": "machine",
"name": "RHEL-8.3.0_HVM-20201031-x86_64-0-Hourly2-GP2",
"owner_id": "309956199498",
"platform_details": "Red Hat Enterprise Linux",
"public": true,
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"sriov_net_support": "simple",
"state": "available",
"tags": {},
"usage_operation": "RunInstances:0010",
"virtualization_type": "hvm"
}
]
}
}
PLAY RECAP ****************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[devops@demo aws]$idempotency
$ ansible-playbook ami_search.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'
PLAY [AMI search] *********************************************************************************
TASK [search for existing AMI] ********************************************************************
ok: [localhost]
TASK [debug] **************************************************************************************
ok: [localhost] => {
"ami_found": {
"changed": false,
"failed": false,
"images": [
{
"architecture": "x86_64",
"block_device_mappings": [
{
"device_name": "/dev/sda1",
"ebs": {
"delete_on_termination": true,
"encrypted": false,
"snapshot_id": "snap-03f2e24f30f580353",
"volume_size": 10,
"volume_type": "gp2"
}
}
],
"creation_date": "2020-11-02T11:01:38.000Z",
"deprecation_time": "2022-11-02T11:01:38.000Z",
"description": "Provided by Red Hat, Inc.",
"ena_support": true,
"hypervisor": "xen",
"image_id": "ami-096fda3c22c1c990a",
"image_location": "309956199498/RHEL-8.3.0_HVM-20201031-x86_64-0-Hourly2-GP2",
"image_type": "machine",
"name": "RHEL-8.3.0_HVM-20201031-x86_64-0-Hourly2-GP2",
"owner_id": "309956199498",
"platform_details": "Red Hat Enterprise Linux",
"public": true,
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"sriov_net_support": "simple",
"state": "available",
"tags": {},
"usage_operation": "RunInstances:0010",
"virtualization_type": "hvm"
}
]
}
}
PLAY RECAP ****************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[devops@demo aws]$See also: Configure a Python Virtual Environment for Ansible AWS - ansible collection amazon.aws
Conclusion
Now you know how to Search for EC2 AMI ID by AWS Region with Ansible.
Related Articles
Category: troubleshooting
Watch the video: Search for AWS EC2 AMI ID by Region - Ansible module ec2_ami_info — Video Tutorial