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.