Hi,
We have multiple clusters. Each of the clusters need to have a different 
var file (cluster specific variables)
Currently the variable file name is same as the cluster name, so that when 
the extra-variable says cluster=ABC, my playbook picks up the variable file 
ABC.yml which I refer to in the playbook by {{cluster}}.yml.
This has a risk because the user while running the playbook might give the 
inventory file name of cluster XYZ and give cluster=ABC.
In order to avoid this risk, I want to pick up my variable file 
as {{inventory_file}}.yml
But looks like the variable file is referred to, before the 
variable inventory_file is loaded?
Because even though {{inventory_file}}.yml is picked up correctly under 
tasks(I printed it our using debug:) the variable file is not being picked 
up.
Am I missing something here?
Thanks and regards,
Mridu


On Monday, May 5, 2014 5:45:57 PM UTC-7, James Cammarata wrote:
>
> The name of the current inventory file in use is stored in the 
> "inventory_file" variable name, so you could check that. Beyond that, there 
> are two other options:
>
> 1. Use --extra-vars to specify the target environment, for example: 
> --extra-vars="inventory=qa"
> 2. The group_vars location is based on the location of the inventory file, 
> so you could do something like this:
>
> qa/group_vars/all:
> inventory=qa
>
> prod/group_vars/all:
> inventory=production
>
> The qa/hosts and prod/hosts would contain your different inventories, so 
> you'll get output like this:
>
> $ cat play.yml 
> - hosts: all
>   gather_facts: no
>   tasks:
>   - name: show the variable
>     debug: var=inventory
>
> $ ansible-playbook play.yml -i prod/hosts 
>
> PLAY [all] 
> ******************************************************************** 
>
> TASK: [show the variable] 
> ***************************************************** 
> ok: [you] => {
>     "inventory": "production"
> }
>
> PLAY RECAP 
> ******************************************************************** 
> you                        : ok=1    changed=0    unreachable=0   
>  failed=0   
>
> $ ansible-playbook play.yml -i qa/hosts 
>
> PLAY [all] 
> ******************************************************************** 
>
> TASK: [show the variable] 
> ***************************************************** 
> ok: [me] => {
>     "inventory": "qa"
> }
>
> PLAY RECAP 
> ******************************************************************** 
> me                         : ok=1    changed=0    unreachable=0   
>  failed=0   
>
>
> Hope that helps.
>
>
>
> On Mon, May 5, 2014 at 4:26 PM, Drew Gulino <[email protected]<javascript:>
> > wrote:
>
>> As suggested in the best practices doc, have two inventory files: qa and 
>> production
>>
>> I call these using the -i parameter:
>>
>> ansible-playbook -i qa ...
>>
>> Is there a way I can determine in my playbook which inventory I am using? 
>>  The use case is I want to notify one chat room if using qa inventory, 
>> another if I use production.
>>
>>
>> I've tried just putting a variable in the root of the inventory file qa:
>>
>> inventory=qa
>> [webservers]
>> host1
>>
>> but that doesn't work: is not displayed as a variable with: "ansible 
>> host1 -m setup -i qa"
>>
>> I can define a variable for each host like:
>>
>> [webservers]
>> host1 inventory=qa
>>
>> but that is terribly redundant.
>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/e5606bef-1a43-40a1-b34a-42c0866cd9ce%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/e5606bef-1a43-40a1-b34a-42c0866cd9ce%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/258ac9c4-e8a5-4eb4-a229-7364e4990902%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to