# debug statement not working

**URL:** <https://forum.ansible.com/t/debug-statement-not-working/29962>\
**Category:** Ansible Project\
**Created:** [March 22, 2019, 7:51pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962 "2019-03-22T19:51:38Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jerry\_Seven](https://avatars.discourse-cdn.com/v4/letter/j/aca169/32.png) [@Jerry\_Seven](https://forum.ansible.com/u/Jerry_Seven)\
**Post date:** [March 22, 2019, 7:51pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962/1 "2019-03-22T19:51:38Z")

</div>

I cant figure out why

---

<div class="post-metadata">

**Author:** ![Jonathan\_Lozada\_De\_L](https://avatars.discourse-cdn.com/v4/letter/j/eb8c5e/32.png) [@Jonathan\_Lozada\_De\_L](https://forum.ansible.com/u/Jonathan_Lozada_De_L)\
**Post date:** [March 22, 2019, 7:57pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962/2 "2019-03-22T19:57:41Z")

</div>

use quotes inside the shell “rpm -q {{ item }}” also you can list for for rpms using the yum module.

---

<div class="post-metadata">

**Author:** ![sivel](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/sivel/32/1198_2.png) [@sivel](https://forum.ansible.com/u/sivel)\
**Post date:** [March 22, 2019, 8:01pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962/3 "2019-03-22T20:01:43Z")

</div>

When you do a loop on a task the registered variable structure changes. Try just debugging `pkg` to see the structure. You will effectively have `pkg.results`

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 22, 2019, 8:02pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962/4 "2019-03-22T20:02:49Z")

</div>

Hi,

> I cant figure out why
> 
> ---  
> - hosts: misc  
> &nbsp;&nbsp;become: false  
> &nbsp;&nbsp;gather\_facts: yes  
> &nbsp;&nbsp;tasks:  
> &nbsp;&nbsp;&nbsp;&nbsp;- name: get package version  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shell: rpm -q {{ item }}  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with\_items:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- "package1"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- "package2"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- "package3"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;register: pkg
> 
> &nbsp;&nbsp;&nbsp;&nbsp;- debug:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: "{{ pkg.stdout }}"
> 
> FAILED! =\> {"msg": "The task includes an option with an undefined  
> variable. The error was: 'dict object' has no attribute  
> 'stdout'\n\nThe error appears to have been in '/opt/ansible/foo.yml':  
> line 14, column 7, but may\nbe elsewhere in the file depending on the  
> exact syntax problem.\n\nThe offending line appears to be:\n\n\n -  
> debug:\n ^ here\n\nexception type: \<class  
> 'ansible.errors.AnsibleUndefinedVariable'\>\nexception: 'dict object'  
> has no attribute 'stdout'"}

note that you're using a loop for the "get package version" task. The  
structure of pkg is different because of that; in particular, pkg has  
no attribute stdout (as the error message tells you). You could output  
the whole content of pkg with debug to see that.

Cheers,  
Felix

---

<div class="post-metadata">

**Author:** ![Jerry\_Seven](https://avatars.discourse-cdn.com/v4/letter/j/aca169/32.png) [@Jerry\_Seven](https://forum.ansible.com/u/Jerry_Seven)\
**Post date:** [March 25, 2019, 5:12pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962/5 "2019-03-25T17:12:18Z")

</div>

So I update debug to:

register: pkg

- debug:  
msg: “{{ pkg.results }}”

and stdout is printed:

ok: [hostname] =\> {  
“msg”: [  
{  
“\_ansible\_ignore\_errors”: null,  
“\_ansible\_item\_result”: true,  
“\_ansible\_no\_log”: false,  
“\_ansible\_parsed”: true,  
“changed”: true,  
“cmd”: “rpm -q TaniumClient”,  
“delta”: “0:00:00.024756”,  
“end”: “2019-03-25 13:10:34.751439”,  
“failed”: false,  
“invocation”: {  
“module\_args”: {  
“\_raw\_params”: “rpm -q TaniumClient”,  
“\_uses\_shell”: true,  
“chdir”: null,  
“creates”: null,  
“executable”: null,  
“removes”: null,  
“stdin”: null,  
“warn”: true  
}  
},  
“item”: “TaniumClient”,  
“rc”: 0,  
“start”: “2019-03-25 13:10:34.726683”,  
“stderr”: “”,  
“stderr\_lines”: ,  
“stdout”: “TaniumClient-6.0.314.1442-1.rhe7.x86\_64”,  
“stdout\_lines”: [  
“TaniumClient-6.0.314.1442-1.rhe7.x86\_64”  
]  
},

but

- debug:  
msg: “{{ pkg.results.stdout }}”

fails. Seems like I should be able to print that.

---

<div class="post-metadata">

**Author:** ![Jerry\_Seven](https://avatars.discourse-cdn.com/v4/letter/j/aca169/32.png) [@Jerry\_Seven](https://forum.ansible.com/u/Jerry_Seven)\
**Post date:** [March 25, 2019, 5:20pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962/6 "2019-03-25T17:20:37Z")

</div>

I found this link which works:

[https://ansiblemaster.wordpress.com/2017/02/24/debug-properly-data-registered-with-a-loop/](https://ansiblemaster.wordpress.com/2017/02/24/debug-properly-data-registered-with-a-loop/)

I just dont understand why it works:

```auto
- debug:
  msg: "{{ echo.results|map(attribute='stdout_lines')|list }}"

```

---

<div class="post-metadata">

**Author:** ![Sebastian\_Meyer](https://avatars.discourse-cdn.com/v4/letter/s/779978/32.png) [@Sebastian\_Meyer](https://forum.ansible.com/u/Sebastian_Meyer)\
**Post date:** [March 26, 2019, 3:30pm UTC](https://forum.ansible.com/t/debug-statement-not-working/29962/7 "2019-03-26T15:30:52Z")

</div>

Hi Jerry,

> ok: [hostname] =\> {  
> &nbsp;&nbsp;&nbsp;&nbsp;"msg": [

^ the [ tells you this is an array. This happens because you call  
register on a task with a loop. For each item of the loop, a new dict  
gets added to this array.

> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"\_ansible\_ignore\_errors": null,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"\_ansible\_item\_result": true,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"\_ansible\_no\_log": false,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"\_ansible\_parsed": true,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"changed": true,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cmd": "rpm -q TaniumClient",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"delta": "0:00:00.024756",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"end": "2019-03-25 13:10:34.751439",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"failed": false,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"invocation": {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"module\_args": {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"\_raw\_params": "rpm -q TaniumClient",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"\_uses\_shell": true,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"chdir": null,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"creates": null,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"executable": null,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"removes": null,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"stdin": null,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"warn": true  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"item": "TaniumClient",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"rc": 0,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"start": "2019-03-25 13:10:34.726683",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"stderr": "",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"stderr\_lines": ,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"stdout": "TaniumClient-6.0.314.1442-1.rhe7.x86\_64",  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"stdout\_lines": [  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"TaniumClient-6.0.314.1442-1.rhe7.x86\_64"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},
> 
> but
> 
> &nbsp;&nbsp;&nbsp;&nbsp;- debug:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: "{{ pkg.results.stdout }}"
> 
> fails. Seems like I should be able to print that.

You could print {{ pkg.results.0.stdout }} for the first element of the  
loop, or {{ pkg.results.1.stdout }} for the second element of the loop.

> I just dont understand why it works:
> 
> - debug:  
> &nbsp;&nbsp;msg: "{{ echo.results|map(attribute='stdout\_lines')|list  
> }}"

What this does is, take the array of dictionaries, and look in each  
dictionary for the key stdout\_lines. Then take the value of that key and  
make a list out of it.

HTH  
Sebastian
