"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.

Reply via email to