"You are right about the intersection of groups - it's a shame you cannot declare hosts like (excuse any syntax issues - code looks funny on a phone):"
Can you elaborate on what you think is missing? ":children" to define child groups is how that part works, so I'm missing the understanding of what part you find lacking there. Thanks! On Wed, Aug 13, 2014 at 3:12 AM, Dominic Bou-Samra <[email protected]> wrote: > Hi Lorin, > > Thanks for replying. > > So the above presentation is exactly the solution we had arrived at in our > Ansible spikes. I wish I had seen that 1 week ago :P. > > You are right about the intersection of groups - it's a shame you cannot > declare hosts like (excuse any syntax issues - code looks funny on a phone): > > [staging] > [staging:children] > tag_env_staging > > [transporters] > [transporters:children] > tag_type_transporter > > [staging_transporters] > [staging_transporters:children] > staging > transporters > > And then in your playbook, declare: > > hosts: staging_transporters > > But perhaps it's better to pass in variables like: > > // configure all staging transporters in us-east-1. Staging inventory > declares group_var with staging param > ansible-playbook -i staging -e zone=us-east-1 transporter.yml > > With transporter.yml looking like: > > - name: Config transporters > hosts: {{environment}}:&{{zone}}:&transporters > > What do you think of that? > > On Tuesday, August 12, 2014 12:39:26 PM UTC+10, Lorin Hochstein wrote: >> >> Hi Dominic: >> >> To support mixing static with dynamic inventory, have the "hostfile" >> entry in your ansible.cfg point to a directory instead of a file. For >> example, my ansible.cfg contains: >> >> [defaults] >> hostfile = inventory >> >> And my inventory directory looks like this: >> >> inventory/hosts >> inventory/ec2.py >> inventory/ec2.ini >> >> The inventory/hosts file is a static Ansible inventory file. The >> inventory/ec2.py and inventory/ec2.ini are the dynamic inventory parts. You >> can edit ec2.ini to specify which regions you want, the example ec2.ini >> file that ships with ansible is pretty clear on how to do this. >> >> I gave a talk on this topic a few months back, the slides may not mean >> too much without me talking (they're pretty sparse) but here they are: >> http://go-talks.appspot.com/github.com/lorin/camp-devops-talk/talk.slide >> >> You can provision instances using the ec2 module. I recommend that you >> use tags when you do provisioning because ec2.py will automatically create >> groups based on tags. One gotcha here is that ec2.py will cache by default, >> so if you want to launch an instance and then configure it immediately >> after it comes up, you'll need to disable caching before in ec2.ini (set >> cache_max_age=0). >> >> If you want to do "Australian transporters in production", I don't think >> you can actually define a new group as an intersection of groups, so you'd >> have to specify the hosts by explicitly doing the intersection of groups: >> >> hosts: australia:&transports:&production >> >> (where "australia", "transports" and "production" are all groups that I >> have assumed you have created via tags). >> >> >> >> On Monday, August 11, 2014 3:21:47 AM UTC-4, Dominic Bou-Samra wrote: >>> >>> Hi all, >>> >>> I've been playing with Ansible as a solution to our deployment >>> infrastructure. Our stack is: >>> >>> - Dozens of "transporters" running on EC2. >>> - Dozens of "detectors" running on EC2 >>> - Production and staging environments >>> - Multiple regions (atm US East and Sydney) >>> >>> What I require from Ansible is: >>> >>> - A dynamic inventory, MIXED IN with a static group declaration. I >>> would like to be able to refer to my "Australian transporters in >>> production", as easily as possible. I would like no IP's/hostnames stored >>> locally (i.e, use EC2.py as a dynamic inventory). >>> - Ability to provision new EC2 instances in any region, in any >>> environment. >>> - As little duplication as possible. >>> >>> I am struggling with trying to lay my project out so that I can achieve >>> these goals. >>> >>> >>> Could anyone provide me with some suggestions or example layouts, >>> ideally with sample command? Let me know if you need more information and >>> what I have so far >>> >> -- > 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/fb2e7d05-0664-445a-81a9-64c6b2a8ab0e%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/fb2e7d05-0664-445a-81a9-64c6b2a8ab0e%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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/CA%2BnsWgym88h0GsehetMbygfPGwzvKJTkgmNs0fabhmCdgN%2BD8w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
