Joel, I think I understand what you mean. It would help to see the playbook(s). Perhaps you need an inventory variable for the load balancers that define what group they are in charge of? I don't think ansible is capable of automatically inferring it on its own. You might be able to write some logic around it in your playbook/template as well. Declaring it might be faster and easier to understand.
- James On Fri, Dec 6, 2013 at 12:44 PM, <[email protected]> wrote: > Hi James, > > If I didn't limit, would it run the tasks for each lbservers for each > webserver, or would it properly know that dc1's webservers should only > interact with dc1's load balancer? > > I am trying to make it so that I could run a playbook for a specific > datacenter, or I could run it for all at the same time (like a code deploy). > The sticking point seems to be that the lbserver in dc1 should only know > about the webservers in dc1. > > > On Friday, December 6, 2013 12:38:47 PM UTC-5, James Martin wrote: >> >> Joel, >> >> It would be: >> >> - hosts: lbservers >> >> In theory, the --limit dc1 would limit the playbook to the lbservers >> in dc1. Just make sure you don't forget to limit! >> >> - James >> >> On Fri, Dec 6, 2013 at 12:32 PM, <[email protected]> wrote: >> > Hi James, >> > >> > First, thanks for the response. >> > >> > Would the example you provided still work when the .yml files declare >> > there >> > hosts as: >> >> >> >> - hosts: lbservers >> > >> > >> > Or would it have to be changed to say: >> >> >> >> - hosts: dc1_lbservers >> > >> > >> > We have specific tasks that would need to be run on the lbservers vs the >> > web >> > servers. >> > >> > Thanks, >> > >> > -Joel >> > >> > >> > On Friday, December 6, 2013 12:19:51 PM UTC-5, James Martin wrote: >> >> >> >> Joel, >> >> >> >> This is untested, but might work (depending on what your playbooks are >> >> doing). Try using multiple groups and parent groups with children. >> >> >> >> Assuming your playbooks ran against the webservers or lbserver goup: >> >> >> >> if you wanted updated only dc1 : >> >> >> >> ansible-playbook myplabook.yml --limit dc1 >> >> >> >> if you wanted to run against both datacenters: >> >> >> >> ansible-playbook myplaybook.yml >> >> >> >> >> >> hosts file: >> >> >> >> [dc1:children] >> >> dc1_webservers >> >> dc1_lbservers >> >> >> >> [dc1_webservers] >> >> 1.1.1.20 >> >> 1.1.1.30 >> >> >> >> [dc1_lbservers] >> >> 1.1.1.10 >> >> >> >> [dc2:children] >> >> dc2_webservers >> >> dc2_lbservers >> >> >> >> [dc1_webservers] >> >> 1.1.2.20 >> >> 1.1.2.30 >> >> >> >> [dc1_lbservers] >> >> 1.1.2.10 >> >> >> >> [webservers:children] >> >> dc1_webservers >> >> dc2_webservers >> >> >> >> [lbservers:children] >> >> dc1_lbservers >> >> dc2_lbservers >> >> >> >> >> >> - James >> >> >> >> On Fri, Dec 6, 2013 at 12:17 AM, <[email protected]> wrote: >> >> > Hello, >> >> > >> >> > We currently have three datacenters, and they're all three basically >> >> > the >> >> > same with some very minor differences. Up until now, what I've done >> >> > is >> >> > created a playbook for each, and a hosts file for each datacenter. >> >> > This >> >> > was >> >> > primarily because the ethernet interfaces slightly differed and we >> >> > didn't >> >> > want to have to remember to provide forgettable variables on the >> >> > command >> >> > line. >> >> > >> >> > Now, we're finally migrating our systems where all datacenters will >> >> > be >> >> > exactly the same, so we can use the same playbook. To keep it >> >> > simple, >> >> > lets >> >> > say that each datacenter has one load balancer, and two web servers. >> >> > >> >> > DC1 >> >> > >> >> > [webservers] >> >> > 1.1.1.20 >> >> > 1.1.1.30 >> >> > >> >> > [lbservers] >> >> > 1.1.1.10 >> >> > >> >> > >> >> > DC2 >> >> > >> >> > [webservers] >> >> > 1.1.2.20 >> >> > 1.1.2.30 >> >> > >> >> > [lbservers] >> >> > 1.1.2.10 >> >> > >> >> > >> >> > DC3 >> >> > >> >> > [webservers] >> >> > 1.1.3.20 >> >> > 1.1.3.30 >> >> > >> >> > [lbservers] >> >> > 1.1.3.10 >> >> > >> >> > >> >> > >> >> > Typically, in our previous setup where each datacenter had its own >> >> > hosts >> >> > file and playbook, we'd do the following to deploy all the >> >> > installation >> >> > tasks: >> >> >> >> >> >> ansible-playbook -i /ansible/dc1/hosts.txt >> >> >> /ansible/dc1/all_full_deploy.yml >> >> > >> >> > >> >> > Since our datacenters will basically be the same, and the playbook >> >> > can >> >> > now >> >> > be the same, I understand that I could use just one playbook, and >> >> > change >> >> > out >> >> > the hosts file and it'll work to isolate deployments to that >> >> > datacenter. >> >> > The >> >> > issue, and why I'm writing this is that I'd also be able to, for >> >> > example, >> >> > deploy our website to all [webservers] regardless of which datacenter >> >> > it's >> >> > in—and it has to perform a few tasks on the respective load balancer >> >> > when it >> >> > does it (taking it out and adding it back). >> >> > >> >> > So, what is the recommended way to have a multi-datacenter hosts file >> >> > so >> >> > that we can work with a single datacenter, or all of them ideally >> >> > using >> >> > the >> >> > same hosts file and the same playbook? >> >> > >> >> > Thank you guys in advance for any advice you can provide. >> >> > >> >> > Sincerely, >> >> > Joel Strellner >> >> > >> >> > -- >> >> > 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]. >> >> > For more options, visit https://groups.google.com/groups/opt_out. >> > >> > -- >> > 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]. >> > For more options, visit https://groups.google.com/groups/opt_out. > > -- > 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]. > For more options, visit https://groups.google.com/groups/opt_out. -- 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]. For more options, visit https://groups.google.com/groups/opt_out.
