# new module: TypeError: 'NoneType' object is not iterable

**URL:** <https://forum.ansible.com/t/new-module-typeerror-nonetype-object-is-not-iterable/29033>\
**Category:** Ansible Developer\
**Created:** [November 15, 2018, 10:26am UTC](https://forum.ansible.com/t/new-module-typeerror-nonetype-object-is-not-iterable/29033 "2018-11-15T10:26:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![christian.tremel](https://avatars.discourse-cdn.com/v4/letter/c/50afbb/32.png) [@christian.tremel](https://forum.ansible.com/u/christian.tremel)\
**Post date:** [November 15, 2018, 10:26am UTC](https://forum.ansible.com/t/new-module-typeerror-nonetype-object-is-not-iterable/29033/1 "2018-11-15T10:26:35Z")

</div>

im trying to programm a new ansible module. while testing i get the following error.

Traceback (most recent call last):  
File “/tmp/ansible\_EHl4xq/ansible\_module\_aix\_stanza.py”, line 276, in   
main()  
File “/tmp/ansible\_EHl4xq/ansible\_module\_aix\_stanza.py”, line 257, in main  
(changed, backup\_file, diff, msg) = do\_stanza(module, path, stanza, options, state, backup, create)  
TypeError: ‘NoneType’ object is not iterable

i cannot see whats the particular problem here…any hints?

`  
#!/usr/bin/python

# -_- coding: utf-8 -_-

from **future** import absolute\_import, division, print\_function  
**metaclass** = type

ANSIBLE\_METADATA = {  
‘metadata\_version’: ‘1.1’,  
‘status’: [‘preview’],  
‘supported\_by’: ‘community’  
}

DOCUMENTATION = ‘’’

---

<div class="post-metadata">

**Author:** ![Marek\_Slebodnik](https://avatars.discourse-cdn.com/v4/letter/m/73ab20/32.png) [@Marek\_Slebodnik](https://forum.ansible.com/u/Marek_Slebodnik)\
**Post date:** [November 15, 2018, 10:38am UTC](https://forum.ansible.com/t/new-module-typeerror-nonetype-object-is-not-iterable/29033/2 "2018-11-15T10:38:38Z")

</div>

Gruess Gott Christian,

what I did while debugging my ansible module is .

**export ANSIBLE\_KEEP\_REMOTE\_FILES=1**  
run ansible scipt /playbook etc

**ansible-playbook -i /tmp/i /home/mslebodn/lbuild/pb/vcs\_update.yml**

and on target machine , find prepared ansible module and run it with pdb

[ans@r7\_ms\_vcs1 ~]$ **find . -name ‘_veritas_’**  
./.ansible/tmp/ansible-tmp-1542277938.32-134723917146469/veritas.py  
[ans@r7\_ms\_vcs1 ~]$ **./.ansible/tmp/ansible-tmp-1542277938.32-134723917146469/veritas.py explode**  
Module expanded into:  
/home/ans/.ansible/tmp/ansible-tmp-1542277938.32-134723917146469/debug\_dir  
[ans@r7\_ms\_vcs1 ~]$ **cd /home/ans/.ansible/tmp/ansible-tmp-1542277938.32-134723917146469/debug\_dir**  
[ans@r7\_ms\_vcs1 debug\_dir]$ **python -m pdb ansible\_module\_veritas.py args**

št 15. 11. 2018 o 11:26 \<[christian.tremel@itsv.at](mailto:christian.tremel@itsv.at)\> napísal(a):

---

<div class="post-metadata">

**Author:** ![christian.tremel](https://avatars.discourse-cdn.com/v4/letter/c/50afbb/32.png) [@christian.tremel](https://forum.ansible.com/u/christian.tremel)\
**Post date:** [November 15, 2018, 11:27am UTC](https://forum.ansible.com/t/new-module-typeerror-nonetype-object-is-not-iterable/29033/3 "2018-11-15T11:27:24Z")

</div>

No very enlightening…!? Any glue how to translate this gibberish into something comprehensible?

TypeError: “‘NoneType’ object is not iterable”

> /root/.ansible/tmp/ansible-tmp-1542279389.38-35472470665900/debug\_dir/ansible\_module\_aix\_stanza.py(276)()

→ main()

(Pdb)

–Return–

> /root/.ansible/tmp/ansible-tmp-1542279389.38-35472470665900/debug\_dir/ansible\_module\_aix\_stanza.py(276)()-\>None

→ main()

(Pdb)

TypeError: “‘NoneType’ object is not iterable”

> (1)()-\>None

(Pdb)

–Return–

> (1)()-\>None

(Pdb)

Traceback (most recent call last):

File “/usr/lib64/python2.7/pdb.py”, line 1314, in main

pdb.\_runscript(mainpyfile)

File “/usr/lib64/python2.7/pdb.py”, line 1233, in \_runscript

self.run(statement)

File “/usr/lib64/python2.7/bdb.py”, line 400, in run

exec cmd in globals, locals

File “”, line 1, in

File “ansible\_module\_aix\_stanza.py”, line 276, in

main()

File “ansible\_module\_aix\_stanza.py”, line 257, in main

(changed, backup\_file, diff, msg) = do\_stanza(module, path, stanza, options, state, backup, create)

TypeError: ‘NoneType’ object is not iterable

Uncaught exception. Entering post mortem debugging

Running ‘cont’ or ‘step’ will restart the program

> /root/.ansible/tmp/ansible-tmp-1542279389.38-35472470665900/debug\_dir/ansible\_module\_aix\_stanza.py(257)main()

→ (changed, backup\_file, diff, msg) = do\_stanza(module, path, stanza, options, state, backup, create)

(Pdb) l

252 options = module.params[‘options’]

253 state = module.params[‘state’]

254 backup = module.params[‘backup’]

255 create = module.params[‘create’]

256

257 → (changed, backup\_file, diff, msg) = do\_stanza(module, path, stanza, options, state, backup, create)

258

259 if not module.check\_mode and os.path.exists(path):

260 file\_args = module.load\_file\_common\_arguments(module.params)

261 changed = module.set\_fs\_attributes\_if\_different(file\_args, changed)

262

(Pdb)

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_­­­

**Christian Tremel**  
**IT-Services der Sozialversicherung GmbH**

Rechenzentrum

AIX Systemadministrator

Gruberstraße 77

A – 4021 Linz

T: +43 (0)50124 844 1266

M: +43 (0)664 88661266

[christian.tremel@itsv.at](mailto:christian.tremel@itsv.at)

[www.itsv.at](http://www.itsv.at)

![https://plattform.sozvers.at/Lists/Schlagzeilen/Attachments/493/CIS-Logo-Signatur.png](https://us1.discourse-cdn.com/ansible/original/2X/7/727b31639ee1b5a8e571e19d6ce154eb81193e61.png)

---

<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:** [November 15, 2018, 3:23pm UTC](https://forum.ansible.com/t/new-module-typeerror-nonetype-object-is-not-iterable/29033/4 "2018-11-15T15:23:17Z")

</div>

A quick look seems to indicate that `do_stanza` may sometimes return `None` due to the indentation of the `return` at the bottom.

You would need to ensure that `do_stanza` always returns the tuple you expect.

> **(attachments)**
>
> ![image001.png](https://us1.discourse-cdn.com/ansible/original/2X/7/727b31639ee1b5a8e571e19d6ce154eb81193e61.png)  
> ![image001.png](https://us1.discourse-cdn.com/ansible/original/2X/7/727b31639ee1b5a8e571e19d6ce154eb81193e61.png)

---

<div class="post-metadata">

**Author:** ![christian.tremel](https://avatars.discourse-cdn.com/v4/letter/c/50afbb/32.png) [@christian.tremel](https://forum.ansible.com/u/christian.tremel)\
**Post date:** [November 16, 2018, 12:49pm UTC](https://forum.ansible.com/t/new-module-typeerror-nonetype-object-is-not-iterable/29033/5 "2018-11-16T12:49:48Z")

</div>

The problem was indeed the wrong indentation oft he last return…thanx matt/marek for your help!

root@lpgaixmgmtlx01:/etc/ansible/aix\>ansible-playbook stanza\_test.yml -vvv

ansible-playbook 2.6.3

config file = /etc/ansible/aix/ansible.cfg

configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]

ansible python module location = /usr/lib/python2.7/site-packages/ansible

executable location = /usr/bin/ansible-playbook

python version = 2.7.5 (default, May 31 2018, 09:45:54) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

Using /etc/ansible/aix/ansible.cfg as config file

Parsed /etc/ansible/aix/dyninv/inventory.py inventory source with script plugin

PLAYBOOK: stanza\_test.yml \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

1 plays in stanza\_test.yml

PLAY [testme] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

META: ran handlers

TASK [stanza test] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

task path: /etc/ansible/aix/stanza\_test.yml:7

\<127.0.0.1\> ESTABLISH LOCAL CONNECTION FOR USER: root

\<127.0.0.1\> EXEC /bin/sh -c ‘echo ~root && sleep 0’

\<127.0.0.1\> EXEC /bin/sh -c ‘( umask 77 && mkdir -p “`echo /root/.ansible/tmp/ansible-tmp-1542371918.99-53757181251403`” && echo ansible-tmp-1542371918.99-53757181251403=“`echo /root/.ansible/tmp/ansible-tmp-1542371918.99-53757181251403`” ) && sleep 0’

Using module file /usr/lib/python2.7/site-packages/ansible/modules/files/aix\_stanza.py

\<127.0.0.1\> PUT /root/.ansible/tmp/ansible-local-9944sl6I9w/tmpA9NMKl TO /root/.ansible/tmp/ansible-tmp-1542371918.99-53757181251403/aix\_stanza.py

\<127.0.0.1\> EXEC /bin/sh -c ‘chmod u+x /root/.ansible/tmp/ansible-tmp-1542371918.99-53757181251403/ /root/.ansible/tmp/ansible-tmp-1542371918.99-53757181251403/aix\_stanza.py && sleep 0’

\<127.0.0.1\> EXEC /bin/sh -c ‘/usr/bin/python2 /root/.ansible/tmp/ansible-tmp-1542371918.99-53757181251403/aix\_stanza.py && sleep 0’

changed: [localhost] =\> {

“changed”: true,

“diff”: {

“after”: “”,

“after\_header”: “/root/stanza\_test (content)”,

“before”: “”,

“before\_header”: “/root/stanza\_test (content)”

},

“gid”: 0,

“group”: “root”,

“invocation”: {

“module\_args”: {

“attributes”: null,

“backup”: false,

“content”: null,

“create”: true,

“delimiter”: null,

“dest”: “/root/stanza\_test”,

“directory\_mode”: null,

“follow”: false,

“force”: null,

“group”: null,

“mode”: null,

“options”: {

“SYSTEM”: “LDAP”,

“bla”: “blaa”,

“registry”: “LDAP”

},

“owner”: null,

“path”: “/root/stanza\_test”,

“regexp”: null,

“remote\_src”: null,

“selevel”: null,

“serole”: null,

“setype”: null,

“seuser”: null,

“src”: null,

“stanza”: “fideloper22”,

“state”: “present”,

“unsafe\_writes”: null

}

},

“mode”: “0644”,

“owner”: “root”,

“path”: “/root/stanza\_test”,

“size”: 103,

“state”: “file”,

“uid”: 0

}

MSG:

stanza and option added

META: ran handlers

META: ran handlers

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_­­­

**Christian Tremel**  
**IT-Services der Sozialversicherung GmbH**

Rechenzentrum

AIX Systemadministrator

Gruberstraße 77

A – 4021 Linz

T: +43 (0)50124 844 1266

M: +43 (0)664 88661266

[christian.tremel@itsv.at](mailto:christian.tremel@itsv.at)

[www.itsv.at](http://www.itsv.at)

![https://plattform.sozvers.at/Lists/Schlagzeilen/Attachments/493/CIS-Logo-Signatur.png](https://us1.discourse-cdn.com/ansible/original/2X/7/727b31639ee1b5a8e571e19d6ce154eb81193e61.png)
