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.

Reply via email to