Re: [ansible-project] inventory_dir is still present as a global variable in Ansible 2.4 ?

2018-03-07 Thread Matt Martz
Please see
http://docs.ansible.com/ansible/latest/porting_guide_2.4.html#inventory for
information about the change to inventory_dir

On Wed, Mar 7, 2018 at 5:24 AM, ishan jain  wrote:

> Hi All,
>
> I am trying to understand the changes with Ansible 2.4 that affects the
> usage of inventory_dir variable.
>
> Earlier i was using a static host file and in my playbooks, i was heavily
> relying on inventory_dir to load variable files which in turn was loading
> the target hosts. I understand the purpose of making the inventory_dir as a
> hostvar, what i did not understand is *how can i still access
> inventory_dir directly as a global variable in my playbooks* *?*
>
> To show what i mean, i created a little demo:
>
> *hosts.info *
> [locals]
> local1 localhost ansible_connection=local
> local2 localhost ansible_connection=local
>
>
>
> *varsFile.yaml*
> #This doesn't work anymore
> #moreVars: "{{ inventory_dir ~ 'moreVars.yaml' }}"
>
> #This also works
> #moreVars: "{{hostvars[groups.all.0].inventory_dir}}/moreVars.yaml"
>
> #This works and this is what i was using before 2.4
> moreVars: "{{inventory_dir}}/moreVars.yaml"
>
>
>
> *moreVars.yaml*
> #Prior to 2.4, this is how i defined target hosts. I understand this will
> not work anymore
> targetHosts: locals
>
> who: MORE_VARS
>
>
>
> *playbook.yaml*
> ---
> - hosts: locals
>   vars_files:
> - varsFile.yaml
> - "{{moreVars}}"
>
>   tasks:
>
>
>  - debug: var=who
>
>  - name: Accessing the inventory_dir as a host var
>debug: msg="Accessing inventory_dir as hostvar --
> {{hostvars[groups.all.0].inventory_dir}}"
>
>  - name: Accessing the inventory DIR directly
>debug: msg="Accessing inventory_dir directly -- {{inventory_dir}}"
>
>
>
>
> *output*
>
>
>
>
>
>
> *$ ansible --versionansible 2.4.3.0$ ansible-playbook playbook.yaml -i
> hosts.info PLAY [locals]
> ***TASK
> [Gathering Facts]
> **ok:
> [local1]ok: [local2]TASK [debug]
> ok:
> [local1] => {"who": "MORE_VARS"}ok: [local2] => {"who":
> "MORE_VARS"}TASK [Accessing the inventory_dir as a host var]
> ok:
> [local1] => {"msg": "Accessing inventory_dir as hostvar --
> /home/ij/temp"}ok: [local2] => {"msg": "Accessing inventory_dir as
> hostvar -- /home/ij/temp"}TASK [Accessing the inventory DIR directly]
> *ok:
> [local1] => {"msg": "Accessing inventory_dir directly --
> /home/ij/temp"}ok: [local2] => {"msg": "Accessing inventory_dir
> directly -- /home/ij/temp"}PLAY RECAP
> **local1
>: ok=4changed=0unreachable=0failed=0local2
>: ok=4changed=0unreachable=0failed=0*
>
>
> *So my questions:*
> *1) How is inventory_dir still available as global var ?*
> *2) Can i continue using it directly or i should
> use hostvars[groups.all.0].inventory_dir ?*
>
> --
> 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 ansible-project+unsubscr...@googlegroups.com.
> To post to this group, send email to ansible-project@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/ansible-project/96846820-85b0-4aee-ac09-fb4062d9412f%40googlegroups.
> com
> 
> .
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Matt Martz
@sivel
sivel.net

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAD

[ansible-project] inventory_dir is still present as a global variable in Ansible 2.4 ?

2018-03-07 Thread ishan jain
Hi All,

I am trying to understand the changes with Ansible 2.4 that affects the 
usage of inventory_dir variable.

Earlier i was using a static host file and in my playbooks, i was heavily 
relying on inventory_dir to load variable files which in turn was loading 
the target hosts. I understand the purpose of making the inventory_dir as a 
hostvar, what i did not understand is *how can i still access inventory_dir 
directly as a global variable in my playbooks* *?*

To show what i mean, i created a little demo:

*hosts.info*
[locals]
local1 localhost ansible_connection=local
local2 localhost ansible_connection=local



*varsFile.yaml*
#This doesn't work anymore
#moreVars: "{{ inventory_dir ~ 'moreVars.yaml' }}"

#This also works
#moreVars: "{{hostvars[groups.all.0].inventory_dir}}/moreVars.yaml"

#This works and this is what i was using before 2.4
moreVars: "{{inventory_dir}}/moreVars.yaml"



*moreVars.yaml*
#Prior to 2.4, this is how i defined target hosts. I understand this will 
not work anymore
targetHosts: locals

who: MORE_VARS



*playbook.yaml*
---
- hosts: locals
  vars_files:
- varsFile.yaml
- "{{moreVars}}"

  tasks:


 - debug: var=who

 - name: Accessing the inventory_dir as a host var
   debug: msg="Accessing inventory_dir as hostvar -- 
{{hostvars[groups.all.0].inventory_dir}}"

 - name: Accessing the inventory DIR directly
   debug: msg="Accessing inventory_dir directly -- {{inventory_dir}}"




*output*






*$ ansible --versionansible 2.4.3.0$ ansible-playbook playbook.yaml -i 
hosts.infoPLAY [locals] 
***TASK
 
[Gathering Facts] 
**ok:
 
[local1]ok: [local2]TASK [debug] 
ok:
 
[local1] => {"who": "MORE_VARS"}ok: [local2] => {"who": 
"MORE_VARS"}TASK [Accessing the inventory_dir as a host var] 
ok:
 
[local1] => {"msg": "Accessing inventory_dir as hostvar -- 
/home/ij/temp"}ok: [local2] => {"msg": "Accessing inventory_dir as 
hostvar -- /home/ij/temp"}TASK [Accessing the inventory DIR directly] 
*ok:
 
[local1] => {"msg": "Accessing inventory_dir directly -- 
/home/ij/temp"}ok: [local2] => {"msg": "Accessing inventory_dir 
directly -- /home/ij/temp"}PLAY RECAP 
**local1
  
   : ok=4changed=0unreachable=0failed=0local2  
   : ok=4changed=0unreachable=0failed=0*


*So my questions:*
*1) How is inventory_dir still available as global var ?*
*2) Can i continue using it directly or i should 
use hostvars[groups.all.0].inventory_dir ?*

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/96846820-85b0-4aee-ac09-fb4062d9412f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.