Hello,

I'm actually revisiting a problem I originally just worked around... maybe 
18 to 24 months ago. I just now did some searching of the list, but there 
were just pages and pages for most searches I tried so apologies if this is 
a solved thing and I missed it.

What I do now to deploy to cloud hosts is have the playbook call a role 
named rax/add_rax or ec2/add_ec2. In that role I use the appropriate cloud 
module to create the hosts (or discover they are already there, of course), 
then I run the add_host loop on the result. The next role that it runs is 
named gather_custom_facts and it detects what provider is in use and uses 
the appropriate "get_facts" type module to set facts named 'private_ip' and 
'public_ip' for each host. (not to imply that hosts from different 
providers are in the same ansible-playbook run; that is still on a Someday 
list somewhere)

I do it this way so that plays work on both clouds with the same names for 
these IP variables (or facts in this case, I suppose). The problem is that 
I feel like it adds quite a bit of overhead (measured both in computing 
resources and to the learning curve for new team members). To just have a 
single ping: task you're already two or three plays in just to have 
inventory.

It seems like the easiest thing would be to use set_fact in the cloud 
provider-specific create/"persist" role and have it still exist in the 
calling playbook. But, of course, the hosts aren't actually in inventory 
yet (and even if they are the set_fact would still be a local_action). I've 
revisited this once or twice in the past and never really got anywhere so 
here I am. :)

Any ideas?

Thank you,
Mark

P.S.: For entertainment value only, I was wondering also if it'd be 
possible to write an inventory script that simply calls ansible-playbook 
again and spits out some inventory-compatible json after running these two 
or three host gathering roles.

-- 
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/04c2bb44-54d8-49b8-9a2b-454301486919%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to