Okay, I placed both inventory scripts in ~/ansible/inventory and it works. The command opens an ssh connection to each host on both clouds.
But, again, spying the process tree list while ansible is running, I've noticed something odd. (BTW, all runs are done after clearing the caches for both inventory scripts every time) If I do -i ~/ansible/inventory/ec2.py, I see ansible running ec2.py --list for a while, then it initiates the ssh connections. If I do -i ~/ansible/inventory/digital_ocean.py, I see ansible running digital_ocean.py --list for a while, then digital_ocean.py --host once for each host I have at DO, and then it launches the ssh connections. But if I do -i ~/ansible/inventory, I see this: It runs one of the scripts with --list; it runs the other script with --list; then it runs digital-ocean.py --host *for all hosts in both lists* (EC2 and DO)! This is A) unnecessary, B) slow, and C) hammering the DO API servers for no good reason. Is it a bug, or am I still doing something wrong? On Wednesday, December 10, 2014 2:55:04 PM UTC-8, Matt Martz wrote: > > Ansible supports inventory directories. If you place both ec2.py and > digital_ocean.py in a directory called "inventory", you could then use: > > ansible -i ~/ansible/inventory -u my-special-user -f 20 -s \* -m shell -a > 'ps' > > You could then also call each inventory script separately if you needed. > > > On Wed, Dec 10, 2014 at 4:48 PM, Florin Andrei <[email protected] > <javascript:>> wrote: > >> New to Ansible, just testing it. For now, I'm using dynamic inventory >> scrips, and I'm trying to run simple commands on all hosts, via ansible. >> >> I've setup ec2.py and digital_ocean.py in ~/ansible/, and both scripts >> work just fine. Provisioned with the correct credentials, if I run either >> script manually, I get the correct list of assets from those two cloud >> providers, respectively. >> >> If I run Ansible with just one script (either ec2.py or digital_ocean.py) >> then that also works well: >> >> ansible -i ~/ansible/ec2.py -u my-special-user -f 20 -s \* -m shell -a >> 'ps' >> >> ansible -i ~/ansible/digital_ocean.py -u my-special-user -f 20 -s \* -m >> shell -a 'ps' >> >> But if I try to do just -i ~/ansible/ (hoping to use both inventory >> scripts in a concatenated list) then it doesn't work. Spying the process >> list with pstree, I've noticed that ansible runs digital_ocean.py --host >> with all the hosts from the EC2 list. That can't be right. No wonder it >> doesn't work then. >> >> What is the correct way to use several dynamic inventory scripts at once >> for something simple like -m shell -a 'ps'? >> >> P.S.: >> >> If I run ./digital_ocean.py --list manually, it just throws a JSON with >> my hosts. But if I do ./ec2.py --list manually, then it generates first >> the "_meta": tag, and then throws a list similar to the DO script. Not >> sure if this is relevant to the main issue, I just thought I should mention >> it. >> >> -- >> 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] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ansible-project/f1717237-2b88-4b50-b42d-b19f0ae8964a%40googlegroups.com >> >> <https://groups.google.com/d/msgid/ansible-project/f1717237-2b88-4b50-b42d-b19f0ae8964a%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Matt Martz > @sivel > sivel.net > -- 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/b7212e8a-d587-40a1-b1ed-fe819e01c5a3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
