I’ve been working to manage dynamic inventory in AWS for Ansible deploys… then I came across this stack overflow link & ches’ answer.
Ansible looks for executables and flat files in a directory and merges their results.
=> tree inventory/staging inventory/staging -- base -- ec2.ini -- ec2.py -- group_vars -> ../group_vars
The base file looks like:
=> more inventory/staging/base [localhost] # I need to tell Ansible which Python on my system has boto for AWS 127.0.0.1 ansible_python_interpreter=/usr/local/bin/python # The EC2 plugin will populate these groups, but we need to add empty entries # here to make aliases for them below. [tag_Stage_staging] [tag_Role_webserver] [staging:children] tag_Stage_staging [webservers:children] tag_Role_webserver
You then just point to the directory for inventory:
$ ansible -i inventory/staging webservers -m ec2_facts # OR $ export ANSIBLE_HOSTS=inventory/staging $ ansible webservers -m ec2_facts