Ansible Inventory Plugin

adrbrownx

Adrian Brown

Posted on November 15, 2022

Ansible Inventory Plugin

Intro

This repo is a smaller part to executing generic ansible commands inside an ansible execution environment using ansible-runner to consume inventory from an external source other than an inventory file.

Here is the repo that is used inside an execution env for those who are curious: https://github.com/cloudguruab/edpm_plugin

If you have questions feel free to open an issue.

Requirements & Dependencies

I have specified all the requirements for this plugin here

  • Ansible
pip install ansible
Enter fullscreen mode Exit fullscreen mode
  • AWS CLI
pip install boto3
pip install awscli
Enter fullscreen mode Exit fullscreen mode

Setup

Be sure the desired collection is installed if you're pulling from pre-built module

ansible-galaxy collection list # list installed plugins
ansible-galaxy collection install amazon.aws
Enter fullscreen mode Exit fullscreen mode

After running ansible-galaxy collection list you should see something like this:

Collection        Version
----------------- -------
amazon.aws        5.1.0
community.general 5.2.0
openstack.cloud   1.10.0
Enter fullscreen mode Exit fullscreen mode

Once this is done you need to navigate to your aws console and obtain your aws_secret_key, and aws_public_key:

#setting up auth 
bash-5.1$ aws configure
AWS Access Key ID [None]: key
AWS Secret Access Key [None]: key
Default region name [None]: us-east-1
Default output format [None]: json
Enter fullscreen mode Exit fullscreen mode

Updating your project

We need to update our inventory source with our private_ip to connect with our instance. Our ansible config file will also map to our inventory source and the plugin we are using.

  • aws_ec2.yml:
plugin: aws_ec2
regions:
  - us-east-1
keyed_groups:
  - key: tags.Tagname
filters:
  instance-state-name: running
compose:
  ansible_host: private_ip
Enter fullscreen mode Exit fullscreen mode
  • ansible.cfg:
[defaults]
enable_plugins=aws_ec2
inventory=aws_ec2.yml
Enter fullscreen mode Exit fullscreen mode

Testing

Lets look for our host:

ansible-inventory -i aws_ec2.yml --list #look for host
ansible-inventory -i aws_ec2.yml --graph # graph view
Enter fullscreen mode Exit fullscreen mode

Resources

💖 💪 🙅 🚩
adrbrownx
Adrian Brown

Posted on November 15, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Ansible Inventory Plugin
ansible Ansible Inventory Plugin

November 15, 2022