Hello, 

I have some trouble on reusing a code wrote for Ansible 2.1.1.0 with 
Ansible 2.3.1.0.
With Ansible 2.3 when I try reading, from a task of a role, a nested 
variable that comes from "group_vars", tells me that variable isn't define.

I remove all unnecessary from my code and create an example code 
(following).

The structure is :
 - test.yml
 - group_vars:
    - db.yml
 - hosts:
    - dev
 - roles:
    - dbtest:
       - tasks:
          - main.yml


Where "test.yml" is: 
- name: test
  hosts: db
  gather_facts: false
  roles:
    - dbtest


"db.yml" under group_vars is:
databases:
  - name: dbName
    encoding: utf8


"dev" under "hosts" is :
[local-db]
localhost

[db:children]
local-db


"main.yml" under "roles/dbtest/tasks" is:
 - name: 'Print databases'
  debug:
    var: databases


- name: 'Item'
  debug:
    var: item
  with_items: databases


- name: 'Item Name'
  debug:
    var: item.name
  with_items: databases


When I run the code with Ansible 2.1.1.0 calling
ansible-playbook -i hosts/dev test.yml
,I got this output:



PLAY [test] 
********************************************************************


TASK [dbtest : Print databases] 
************************************************
ok: [localhost] => {
    "databases": [
        {
            "encoding": "utf8",
            "name": "dbName"
        }
    ]
}


TASK [dbtest : Item] 
***********************************************************
ok: [localhost] => (item={u'name': u'dbName', u'encoding': u'utf8'}) => {
    "item": {
        "encoding": "utf8",
        "name": "dbName"
    }
}


TASK [dbtest : Item Name] 
******************************************************
ok: [localhost] => (item={u'name': u'dbName', u'encoding': u'utf8'}) => {
    "item": {
        "encoding": "utf8",
        "name": "dbName"
    },
    "item.name": "dbName"
}


PLAY RECAP 
*********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0


When I run with Ansible 2.3.1.0 the output is:

PLAY [test] 
**********************************************************************************************************


TASK [dbtest : Print databases] 
**************************************************************************************
ok: [localhost] => {
    "databases": [
        {
            "encoding": "utf8",
            "name": "dbName"
        }
    ]
}


TASK [dbtest : Item] 
*************************************************************************************************
ok: [localhost] => (item=databases) => {
    "item": "databases"
}


TASK [dbtest : Item Name] 
********************************************************************************************
ok: [localhost] => (item=databases) => {
    "item": "databases",
    "item.name": "VARIABLE IS NOT DEFINED!"
}


PLAY RECAP 
***********************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0


As you can see, on the last step when I try to read "item.name" the old one 
works, the new one doesn't see the variable.

I'd like to understand if is possible and how modify my code in order that 
will work also with Ansible 2.3 (considering that in my full code I widely 
use nested variable as describe above.

Tell me if you need more information and if you have any suggestion, thanks

Paolo

-- 
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/93836018-ba9b-44b2-90f1-ee2c53921b3f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to