# with\_nested in use with variables?

**URL:** <https://forum.ansible.com/t/with-nested-in-use-with-variables/13109>\
**Category:** Ansible Project\
**Created:** [July 12, 2013, 11:44am UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109 "2013-07-12T11:44:52Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mark\_Maas](https://avatars.discourse-cdn.com/v4/letter/m/7c8e57/32.png) [@Mark\_Maas](https://forum.ansible.com/u/Mark_Maas)\
**Post date:** [July 12, 2013, 11:44am UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/1 "2013-07-12T11:44:52Z")

</div>

Hi List,

We are trying to do this:

> - name: Oracle | Copy files  
> action: copy  
> backup=yes  
> src=/media/storage/DM/orabestanden/aix/{{item}}  
> force=yes  
> dest=/opt/oracle/admin/network/admin/${item}  
> owner=oracle  
> group=dbamgr  
> with\_items: orafiles  
> register: nieuweversiegeplaatst  
> tags:
> 
> - orabestanden
> 
> - name: Oracle | Lookup which files there are  
> action: shell ls /opt/oracle/product/  
> register: oracle\_versions  
> tags:
> 
> - orabestanden
> 
> - name: Oracle | Find out where the Admin path is  
> action: shell find /opt/oracle/product/{{ item }} -type d -name admin | grep -i network  
> with\_items:
> 
> - $oracle\_versions.stdout\_lines  
> register: oracle\_admin\_path  
> tags:
> 
> - orabestanden
> 
> - name: Oracle | Remove previous links/files  
> action: file  
> state=absent  
> dest={{ item[0] }}/{{ item[1] }}  
> with\_nested:  
> $oracle\_admin\_path.stdout\_lines  
> $orafiles  
> when\_changed: $nieuweversiegeplaatst  
> tags:
> 
> - orabestanden

> - name: Oracle | Create new links  
> action: file  
> state=link  
> src=/opt/oracle/admin/network/admin/{{ item[1] }}  
> dest={{ item[0] }}/{{ item[1] }}  
> owner=oracle  
> group=dba  
> with\_nested:  
> $oracle\_admin\_path.stdout\_lines  
> $orafiles  
> when\_changed: $nieuweversiegeplaatst  
> tags:
> - orabestanden

But when activated, We see this:

> TASK: [Oracle | Find out where the Admin path is] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> failed: [laixviola] =\> (item={u’changed’: True, u’end’: u’2013-07-12 13:37:42.035145’, u’stdout’: u’10.2\n11.2’, u’cmd’: u’ls /opt/oracle/product/ ‘, u’rc’: 0, ‘item’: ‘’, u’stderr’: u’‘, u’delta’: u’0:00:00.009996’, ‘invocation’: {‘module\_name’: ‘shell’, ‘module\_args’: ‘ls /opt/oracle/product/’}, ‘stdout\_lines’: [u’10.2’, u’11.2’], u’start’: u’2013-07-12 13:37:42.025149’}.stdout\_lines) =\> {“changed”: true, “cmd”: "find /opt/oracle/product/{u’changed’: True, u’end’: u’2013-07-12 13:37:42.035145’, u’stdout’: u’10.2\n11.2’, u’cmd’: u’ls /opt/oracle/product/ ‘, u’rc’: 0, ‘item’: ‘’, u’stderr’: u’‘, u’delta’: u’0:00:00.009996’, ‘invocation’: {‘module\_name’: ‘shell’, ‘module\_args’: ‘ls /opt/oracle/product/’}, ‘stdout\_lines’: [u’10.2’, u’11.2’], u’start’: u’2013-07-12 13:37:42.025149’}.stdout\_lines -type d -name admin | grep -i network ", “delta”: “0:00:00.013772”, “end”: “2013-07-12 13:37:44.072192”, “item”: “{u’changed’: True, u’end’: u’2013-07-12 13:37:42.035145’, u’stdout’: u’10.2\n11.2’, u’cmd’: u’ls /opt/oracle/product/ ‘, u’rc’: 0, ‘item’: ‘’, u’stderr’: u’‘, u’delta’: u’0:00:00.009996’, ‘invocation’: {‘module\_name’: ‘shell’, ‘module\_args’: ‘ls /opt/oracle/product/’}, ‘stdout\_lines’: [u’10.2’, u’11.2’], u’start’: u’2013-07-12 13:37:42.025149’}.stdout\_lines”, “rc”: 1, “start”: “2013-07-12 13:37:44.058420”}  
> stderr: find: bad status-- /opt/oracle/product/{uchanged:  
> find: bad status-- True,  
> find: bad status-- uend:  
> find: bad status-- u2013-07-12 13:37:42.035145,  
> find: bad status-- ustdout:  
> find: bad status-- u10.2\n11.2,  
> find: bad status-- ucmd:  
> find: bad starting directory  
> find: bad status-- urc:  
> find: bad status-- 0,  
> find: bad status-- item:  
> find: bad status-- ,  
> find: bad status-- ustderr:  
> find: bad status-- u,  
> find: bad status-- udelta:  
> find: bad status-- u0:00:00.009996,  
> find: bad status-- invocation:  
> find: bad status-- {module\_name:  
> find: bad status-- shell,  
> find: bad status-- module\_args:  
> find: bad starting directory  
> find: bad status-- stdout\_lines:  
> find: bad status-- [u10.2,  
> find: bad status-- u11.2],  
> find: bad status-- ustart:  
> find: bad status-- u2013-07-12 13:37:42.025149}.stdout\_lines  
> FATAL: all hosts have already failed – aborting

I’m guessing that I’m not using the variables correcly, So I also tried variations like these:

with\_items:

- ${oracle\_versions.stdout\_lines}

with\_items:

- ${oracle\_versions}.stdout\_lines

with\_items:

- {{ oracle\_versions.stdout\_lines }}

Comes back with:

> ERROR: Syntax Error while loading YAML script, /home/mmaas/playbooks/tasks/ora\_bestanden\_aix.yml  
> Note: The error may actually appear before this position: line 47, column 8  
> with\_items:
> 
> - {{ oracle\_versions.stdout\_lines }}

S they all came back with errors.

What is the exact way of referering to the variable?

Thanks in advance,  
Mark

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 12, 2013, 12:29pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/2 "2013-07-12T12:29:16Z")

</div>

Looks like you have a syntax error at minimum

with\_nested:  
$oracle\_admin\_path.stdout\_lines  
$orafiles

Missing the “-” before each list element.

---

<div class="post-metadata">

**Author:** ![Mark\_Maas](https://avatars.discourse-cdn.com/v4/letter/m/7c8e57/32.png) [@Mark\_Maas](https://forum.ansible.com/u/Mark_Maas)\
**Post date:** [July 12, 2013, 1:01pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/3 "2013-07-12T13:01:49Z")

</div>

True, it was something I was testing, I tried again with:

> with\_nested:
> 
> - $oracle\_admin\_path.stdout\_lines
> - $orafiles

But still getting this error:

> failed: [laixviola] =\> (item={u’changed’: True, u’end’: u’2013-07-12 15:00:13.636800’, u’stdout’: u’10.2\n11.2’, u’cmd’: u’ls /opt/oracle/product/ ‘, u’rc’: 0, ‘item’: ‘’, u’stderr’: u’‘, u’delta’: u’0:00:00.009673’, ‘invocation’: {‘module\_name’: ‘shell’, ‘module\_args’: ‘ls /opt/oracle/product/’}, ‘stdout\_lines’: [u’10.2’, u’11.2’], u’start’: u’2013-07-12 15:00:13.627127’}.stdout\_lines) =\> {“changed”: true, “cmd”: "find /opt/oracle/product/{u’changed’: True, u’end’: u’2013-07-12 15:00:13.636800’, u’stdout’: u’10.2\n11.2’, u’cmd’: u’ls /opt/oracle/product/ ‘, u’rc’: 0, ‘item’: ‘’, u’stderr’: u’‘, u’delta’: u’0:00:00.009673’, ‘invocation’: {‘module\_name’: ‘shell’, ‘module\_args’: ‘ls /opt/oracle/product/’}, ‘stdout\_lines’: [u’10.2’, u’11.2’], u’start’: u’2013-07-12 15:00:13.627127’}.stdout\_lines -type d -name admin | grep -i network ", “delta”: “0:00:00.012722”, “end”: “2013-07-12 15:00:15.631391”, “item”: “{u’changed’: True, u’end’: u’2013-07-12 15:00:13.636800’, u’stdout’: u’10.2\n11.2’, u’cmd’: u’ls /opt/oracle/product/ ‘, u’rc’: 0, ‘item’: ‘’, u’stderr’: u’‘, u’delta’: u’0:00:00.009673’, ‘invocation’: {‘module\_name’: ‘shell’, ‘module\_args’: ‘ls /opt/oracle/product/’}, ‘stdout\_lines’: [u’10.2’, u’11.2’], u’start’: u’2013-07-12 15:00:13.627127’}.stdout\_lines”, “rc”: 1, “start”: “2013-07-12 15:00:15.618669”}  
> stderr: find: bad status-- /opt/oracle/product/{uchanged:  
> find: bad status-- True,  
> find: bad status-- uend:  
> find: bad status-- u2013-07-12 15:00:13.636800,  
> find: bad status-- ustdout:  
> find: bad status-- u10.2\n11.2,  
> find: bad status-- ucmd:  
> find: bad starting directory  
> find: bad status-- urc:  
> find: bad status-- 0,  
> find: bad status-- item:  
> find: bad status-- ,  
> find: bad status-- ustderr:  
> find: bad status-- u,  
> find: bad status-- udelta:  
> find: bad status-- u0:00:00.009673,  
> find: bad status-- invocation:  
> find: bad status-- {module\_name:  
> find: bad status-- shell,  
> find: bad status-- module\_args:  
> find: bad starting directory  
> find: bad status-- stdout\_lines:  
> find: bad status-- [u10.2,  
> find: bad status-- u11.2],  
> find: bad status-- ustart:
> 
> > find: bad status-- u2013-07-12 15:00:13.627127}.stdout\_lines  
> > FATAL: all hosts have already failed – aborting

Thanks,  
Mark

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 12, 2013, 1:08pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/4 "2013-07-12T13:08:45Z")

</div>

Ok so you can’t just say $foo.x in the old style syntax way, it would have been ${foo.x}

Though no one should be using $foo or ${foo} anymore as {{ foo }} is the preferred way of doing things.

- “{{ foo.x }}”

---

<div class="post-metadata">

**Author:** ![Mark\_Maas](https://avatars.discourse-cdn.com/v4/letter/m/7c8e57/32.png) [@Mark\_Maas](https://forum.ansible.com/u/Mark_Maas)\
**Post date:** [July 12, 2013, 1:27pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/5 "2013-07-12T13:27:54Z")

</div>

Getting closer!

> - name: Oracle | Admin pad uitvogelen  
> action: shell find /opt/oracle/product/{{ item }} -type d -name admin | grep -i network  
> with\_items:
> - “{{ oracle\_versions.stdout\_lines }}”  
> register: oracle\_admin\_path  
> tags:
> - orabestanden

Now still results in something that is not iterated:

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 12, 2013, 1:31pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/6 "2013-07-12T13:31:40Z")

</div>

Ok good, I didn’t expect that part to actually work 🙂

But did you try:

- ${foo.x}

?

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 12, 2013, 1:33pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/7 "2013-07-12T13:33:42Z")

</div>

FWIW, ticket to track this: [http://github.com/ansible/ansible/issues/3513](http://github.com/ansible/ansible/issues/3513)

---

<div class="post-metadata">

**Author:** ![Mark\_Maas](https://avatars.discourse-cdn.com/v4/letter/m/7c8e57/32.png) [@Mark\_Maas](https://forum.ansible.com/u/Mark_Maas)\
**Post date:** [July 12, 2013, 1:49pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/8 "2013-07-12T13:49:12Z")

</div>

Ah excellent, because this did work before…

So now I’m at the next task, which is:

> - name: Oracle | Verwijder links/bestanden  
> action: file  
> state=absent  
> dest={{ item[0] }}/{{ item[1] }}  
> with\_nested:
> - ${oracle\_admin\_path.stdout\_lines}
> - ${orafiles}  
> when\_changed: $nieuweversiegeplaatst  
> tags:
> - orabestanden

Which now bums out with:

> TASK: [Oracle | Verwijder links/bestanden] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> skipping: [laixviola] =\> (item=[‘$’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘$’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘{’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘{’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘o’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘o’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘r’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘r’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘a’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘a’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘c’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘c’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘l’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘l’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘e’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘e’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘_‘, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[’_’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘a’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘a’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘d’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘d’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘m’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘m’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘i’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘i’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘n’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘n’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘_‘, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[’_’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘p’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘p’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘a’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘a’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘t’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘t’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘h’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘h’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘.’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘.’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘s’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘s’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘t’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘t’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘d’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘d’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘o’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘o’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘u’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘u’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘t’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘t’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘_‘, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[’_’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘l’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘l’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘i’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘i’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘n’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘n’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘e’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘e’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘s’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘s’, ‘tnsnames.ora’])  
> skipping: [laixviola] =\> (item=[‘}’, ‘sqlnet.ora’])  
> skipping: [laixviola] =\> (item=[‘}’, ‘tnsnames.ora’])

I’m glad it’s skipping 😉 That could have been a mess to clean up!  
Another syntax error I’m not seeing? I tried this as well:

- name: Oracle | Verwijder links/bestanden  
action: file  
state=absent  
dest={{ item[0] }}/{{ item[1] }}  
with\_nested:
- “{{ oracle\_admin\_path.stdout\_lines }}”
- “{{ orafiles }}”  
when\_changed: $nieuweversiegeplaatst  
tags:
- orabestanden

Which made it worse 😉

TASK: [Oracle | Verwijder links/bestanden] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
skipping: [laixviola] =\> (item=[u’{‘, u’[‘])  
skipping: [laixviola] =\> (item=[u’{‘, u"’“])  
skipping: [laixviola] =\> (item=[u’{‘, u’s’])  
skipping: [laixviola] =\> (item=[u’{‘, u’q’])  
skipping: [laixviola] =\> (item=[u’{‘, u’l’])  
skipping: [laixviola] =\> (item=[u’{‘, u’n’])  
skipping: [laixviola] =\> (item=[u’{‘, u’e’])  
skipping: [laixviola] =\> (item=[u’{‘, u’t’])  
skipping: [laixviola] =\> (item=[u’{‘, u’.‘])  
skipping: [laixviola] =\> (item=[u’{‘, u’o’])  
skipping: [laixviola] =\> (item=[u’{‘, u’r’])  
skipping: [laixviola] =\> (item=[u’{‘, u’a’])  
skipping: [laixviola] =\> (item=[u’{', u”‘"])  
skipping: [laixviola] =\> (item=[u’{‘, u’,‘])  
skipping: [laixviola] =\> (item=[u’{‘, u’ ‘])  
skipping: [laixviola] =\> (item=[u’{‘, u"’“])  
skipping: [laixviola] =\> (item=[u’{‘, u’t’])  
skipping: [laixviola] =\> (item=[u’{‘, u’n’])  
skipping: [laixviola] =\> (item=[u’{‘, u’s’])  
skipping: [laixviola] =\> (item=[u’{‘, u’n’])  
skipping: [laixviola] =\> (item=[u’{‘, u’a’])  
skipping: [laixviola] =\> (item=[u’{‘, u’m’])  
skipping: [laixviola] =\> (item=[u’{‘, u’e’])  
skipping: [laixviola] =\> (item=[u’{‘, u’s’])  
skipping: [laixviola] =\> (item=[u’{‘, u’.‘])  
skipping: [laixviola] =\> (item=[u’{‘, u’o’])  
skipping: [laixviola] =\> (item=[u’{‘, u’r’])  
skipping: [laixviola] =\> (item=[u’{‘, u’a’])  
skipping: [laixviola] =\> (item=[u’{', u”‘"])  
skipping: [laixviola] =\> (item=[u’{‘, u’]‘])  
skipping: [laixviola] =\> (item=[u’{‘, u’[‘])  
skipping: [laixviola] =\> (item=[u’{‘, u"’"])  
skipping: [laixviola] =\> (item=[u’{‘, u’s’])  
skipping: [laixviola] =\> (item=[u’{‘, u’q’])  
skipping: [laixviola] =\> (item=[u’{‘, u’l’])

I snipped the output, it would have been way too long 😉

Thanks again,  
Mark

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 12, 2013, 2:01pm UTC](https://forum.ansible.com/t/with-nested-in-use-with-variables/13109/9 "2013-07-12T14:01:34Z")

</div>

Ok I’ll take a look.
