AnsiblePilot — Master Ansible Automation

AnsiblePilot is the leading resource for learning Ansible automation, DevOps, and infrastructure as code. Browse over 1,400 tutorials covering Ansible modules, playbooks, roles, collections, and real-world examples. Whether you are a beginner or an experienced engineer, our step-by-step guides help you automate Linux, Windows, cloud, containers, and network infrastructure.

Popular Topics

About Luca Berton

Luca Berton is an Ansible automation expert, author of 8 Ansible books published by Apress and Leanpub including "Ansible for VMware by Examples" and "Ansible for Kubernetes by Example", and creator of the Ansible Pilot YouTube channel. He shares practical automation knowledge through tutorials, books, and video courses to help IT professionals and DevOps engineers master infrastructure automation.

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.

Search for AWS EC2 AMI ID by Region - Ansible module ec2_ami_info

How to Search for EC2 AMI ID by AWS Region with Ansible?

I'm going to show you a live Playbook and some simple Ansible code.

I'm Luca Berton and welcome to today's episode of Ansible Pilot.

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

Let's talk about the Ansible module 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

Example:

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

amazon.aws.ec2_ami_info

Playbook

How to Search for EC2 AMI ID by AWS Region with Ansible. I'm going to show you how to Gather Information on a specific "RHEL-8.3.0_HVM" AWS EC2 Hourly Machine for the region "us-east-1" and select the EC2 AMI ID using Ansible Playbook.

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_found

execution

$ 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]$

code with ❤️ in GitHub

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

become_user and become_method in AnsibleAnsible Inventory GuideAnsible AWS guide

Category: troubleshooting

Watch the video: Search for AWS EC2 AMI ID by Region - Ansible module ec2_ami_info — Video Tutorial

Browse all Ansible tutorials · AnsiblePilot Home