Hi all
Let’s say I’ve got a service that I need to install on a machine that we’ll call ‘client’ and for that to work it has to get some parameter from a box called ‘master’.
For this to work under ansible it would need to:
- install on ‘client’
- contact ‘master’ to relay the hostname of ‘client’ and get an install string
- go back to ‘client’ and perform a sync with this string.
So I thought the best way to approach this would be lookups. But can’t figure out the syntax for this, or even if this would be the right approach?
(I can actually make this work with a shell script easily, but thought that ansible would be the right tool to get things standardized)
Any insights greatly appreciated…
My thought would be to use delegate_to to call a script on master that returns the string that the client needs.
Nathan
“Let’s say I’ve got a service that I need to install on a machine that we’ll call ‘client’ and for that to work it has to get some parameter from a box called ‘master’.”
Just gather this parameter via a fact or run a seperate play first to save that result for that particular host.
delegate_to from 500 machines to a common machine can result in a bit of DDOS, and is usually not the answer.
Hi
Thanks for the comments. It would help tho, if I had explained the issue in a coherent way. 
Let me rephrase:
I still got a service to install.
But it’s in a bunch of boxes that we’ll call ‘client-group’ (client1, client2…).
I still got a ‘master’ box that needs to be contacted for each ‘client#’ box.
So ansible should loop over the client-group and do:
- install on client#
- contact ‘master’ to relay the hostname of ‘client#’ and get an install string
- go back to ‘client#’ and perform a sync with this string.
The problem comes when I declare in a play:
`
hosts: client-group
`
From then on, it seems to me impossible to contact any other machine than what is declared on the ‘hosts’ line.
So that’s why I did ask for help with lookups, but not sure at all, how that would work.
I ended up doing this with a loop in a shell script. Ugly but works…
“From then on, it seems to me impossible to contact any other machine than what is declared on the ‘hosts’ line.”
You can start another play in the same playbook that talks to a different host group.