I’m trying to run a shell command on multiple servers and have the results appended to a local file. The way I have it written now doesn’t work. I only get the result of the last server because it runs the first task for each server before moving on to the next task. Hence I get the result of the last server in my file.
How do I get this to work with Ansible? The example here: http://docs.ansible.com/playbooks_loops.html doesn’t really fit my situation because I want the loop to be on inventory hosts.
Could you perhaps save the results into different files on the local machine (such as /tmp/local_action.{{ inventory_hostname }}), then assemble them into a single file as a subsequent task? There is an assemble module that may do the job.
Thanks Tom. That’s what I ended up doing. Unfortunately, I had to run the ansible playbook once for each server. I really wanted to run the playbook in one shot against all servers. I could have just created a for loop using ssh to do it, but I really wanted to see if I could get it to work with Ansible.
I put the playbook up on GitHub. You can find it here: https://github.com/jmcmahon/legacy_ec2. A link to the ec2-metadata script is in the README.md file.