Hello,
I've run into a situation where I need to define a variable of EC2 public
IPs so I can pass them into my cassandra nodes as seeds.
The problem being, I don't know a good way to get the public IPs. I
currently use static inventory (blank, just for groups) and dynamic
inventory (ec2.py).
So Ideally, I'd be able to do something like
cassandra_seeds: "{{
hostvars[groups['tag_service_az_cassandra-a'][ansible_ec2_public_ipv4] }}"
however, this doesn't work. 'ansible_ec2_public_ipv4' is only present when
ec2_facts has been run. ec2_facts can only be run on the instance ansible
is currently provisioning and I need the cassandra_seeds variable across
all my cassandra instances.
Another idea was:
cassandra_seeds: "{% for host in groups['tag_service_az_cassandra-a'] %}
{{hostvars[host].ansible_ec2_public_ipv4 }} {% end for %}"
Again, this falls apart because ansible_ec2_public_ipv4 isn't present.
None of the ansible_ facts gathered have the public ip, only ec2_facts has
it.
I realize I could change ec2.ini to return public ip for vpc instances, but
that would break all of my other plays... I need private ips everywhere
else, this is the only instance where I need to use public ips.
The only potential solution I have figured out would be to write a record
to route53 for this express purpose of recording the public ip, but that
seems like a failure on using ansible correctly.
This seems like it should be really easy, What am I missing?
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/461fd936-e20b-439f-8b26-11c29d0c99d6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.