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=4    changed=0    unreachable=0    failed=0local2  
                   : ok=4    changed=0    unreachable=0    failed=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.

Reply via email to