Hi all,
I have the following playbook trying to create a subgroup out of my ec2 dynamic inventory with instances matching given tags:
---
- hosts: ec2
gather_facts: False
connection: local
tasks:
- add_host: hostname={{ hostvars[inventory_hostname]['ec2_publicIp'] }} groupname=ec2hosts server_name={{ hostvars[inventory_hostname]['ec2_public_dns_name'] }}
when: hostvars[inventory_hostname]['ec2_region'] == 'ap-southeast-2'
and hostvars[inventory_hostname]['ec2_tag_Role'] ~ 'application'
and hostvars[inventory_hostname]['ec2_tag_Type'] == 'tomcat'
- hosts: ec2hosts
gather_facts: True
remote_user: user1
sudo: True
tasks:
# fetch instance data from the metadata servers in ec2
- ec2_facts:
# show all known facts for this host
- debug: var=hostvars[inventory_hostname]
# just show the instance-id
- debug: msg="{{ hostvars[inventory_hostname]['ansible_ec2_instance-id'] }}"
This is the result of its run:
PLAY [ec2] ********************************************************************
TASK: [add_host hostname={{hostvars[inventory_hostname]['ec2_publicIp']}} groupname=ec2hosts server_name={{hostvars[inventory_hostname]['ec2_public_dns_name']}}] ***
skipping: [54.72.64.112]
PLAY [ec2hosts] ***************************************************************
skipping: no hosts matched
The instances are being picked up correctly, I confirmed that with debug output, but looks like the group is not being populated correctly. I'm probably missing something here since looks like the supposed loop is not happening.
Can anyone spot what am I doing wrong here?
Thanks,
Igor