Find the Best Cosmetic Hospitals

Explore trusted cosmetic hospitals and make a confident choice for your transformation.

โ€œInvest in yourself โ€” your confidence is always worth it.โ€

Explore Cosmetic Hospitals

Start your journey today โ€” compare options in one place.

Ansible: Dynamic Ansible Inventory Script for AWS EC2 Public IPs

Below is a simple dynamic inventory Bash script for Ansible that queries all EC2 instances in your AWS account, gets their public IPs, and outputs a valid Ansible inventory.
You just need the AWS CLI installed and properly configured (aws configure), and the script will work anywhere you have permissions.


Dynamic Ansible Inventory Script for AWS EC2 Public IPs

Save this as ec2_dynamic_inventory.sh and make it executable (chmod +x ec2_dynamic_inventory.sh).

#!/bin/bash

# Simple AWS EC2 Dynamic Inventory for Ansible (public IPs)
# Requirements: awscli, jq

REGION="${AWS_REGION:-ap-south-1}"

get_instances() {
    aws ec2 describe-instances \
        --region "$REGION" \
        --filters "Name=instance-state-name,Values=running" \
        --query 'Reservations[*].Instances[*].{PublicIp:PublicIpAddress,Name:Tags[?Key==`Name`]|[0].Value,Id:InstanceId}' \
        --output json
}

if [[ "$1" == "--list" ]]; then
    INSTANCES=$(get_instances)
    HOSTS=$(echo "$INSTANCES" | jq -r '.[][] | select(.PublicIp != null) | .PublicIp' | jq -R . | jq -s .)
    cat <<EOF
{
  "aws_ec2_public": {
    "hosts": $HOSTS
  }
}
EOF
    exit 0
elif [[ "$1" == "--host" ]]; then
    # Not needed for most use cases; required by Ansible interface.
    echo "{}"
    exit 0
else
    echo "Usage: $0 --list|--host <hostname>"
    exit 1
fi

Code language: PHP (php)

Usage

  • Plain text for -i ./ec2_dynamic_inventory.sh: ./ec2_dynamic_inventory.sh
  • JSON for -i ./ec2_dynamic_inventory.sh --list (for Ansible dynamic inventory integration): ./ec2_dynamic_inventory.sh --list

Requirements

  • Install the AWS CLI (yum install awscli or pip install awscli)
  • Install jq (yum install jq or apt install jq)
  • Run aws configure first, or ensure AWS credentials are available in your environment.

How It Works

  • Lists all running EC2 instances with public IPs in your chosen AWS region.
  • Outputs a group called [aws_ec2_public] with each instanceโ€™s public IP as a host.
  • Also supports --list for JSON output compatible with Ansibleโ€™s dynamic inventory system.

Sample Output

Text (INI) output:

[aws_ec2_public]
13.233.139.133
3.7.218.154
...
Code language: CSS (css)

JSON output for --list:

{
  "aws_ec2_public": {
    "hosts": [
      "13.233.139.133",
      "3.7.218.154"
    ]
  }
}
Code language: JSON / JSON with Comments (json)

You can now use this script with Ansible:

ansible -i ./ec2_dynamic_inventory.sh all -m ping

or for playbooks:

ansible-playbook -i ./ec2_dynamic_inventory.sh myplaybook.yml

Find Trusted Cardiac Hospitals

Compare heart hospitals by city and services โ€” all in one place.

Explore Hospitals

Similar Posts

Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments