'TypeError: 'NoneType' object is not iterable in ansible output
I have set up an ansible tower using the following docker image
ybalt/ansible-tower:latest
After setting up I have upgraded the applications inside the container by
apt-get upgrade
After that following are the versions inside my conatiner
ansible 2.7.6
config file = /etc/ansible/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/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.12 (default, Jul 18 2016, 15:02:52) [GCC 4.8.4]
Then when I execute a script that uses the mail module in ansible the following error shown in the ansible tower output
fatal: [Server]: FAILED! => {
"changed": false,
"module_stderr": "Shared connection to x.x.x.x closed.\r\n",
"module_stdout": "\r\nTraceback (most recent call last):\r\n File \"/home/ansible/.ansible/tmp/ansible-tmp-1549369654.27-211111564926363/AnsiballZ_mail.py\", line 113, in <module>\r\n _ansiballz_main()\r\n File \"/home/ansible/.ansible/tmp/ansible-tmp-1549369654.27-211111564926363/AnsiballZ_mail.py\", line 105, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File \"/home/ansible/.ansible/tmp/ansible-tmp-1549369654.27-211111564926363/AnsiballZ_mail.py\", line 48, in invoke_module\r\n imp.load_module('__main__', mod, module, MOD_DESC)\r\n File \"/tmp/ansible_mail_payload_bQeVQh/__main__.py\", line 381, in <module>\r\n File \"/tmp/ansible_mail_payload_bQeVQh/__main__.py\", line 330, in main\r\nTypeError: 'NoneType' object is not iterable\r\n",
"msg": "MODULE FAILURE\nSee stdo…
I have developed a seperate palybook with email configurations inorder to refer from an any playbook. So the following is the variables that I have defined in the playbook
email_host: "smtp.sendgrid.net"
email_port: 587
email_username: "username"
email_password: "password"
email_to: "[email protected]"
email_cc:
email_subject: "test"
email_body:
email_subtype: "html"
email_secure: "try"
email_from: "[email protected] ( Ansible Tower )"
email_bcc:
email_attach:
Following is the way how i refer to the above email playbook from my other playbooks
- name: Email body on failure
set_fact:
email_body="Hi {{ tower_user_name }}, <br><br> Status - Failed
<br> Issue - Build path or given build name doesn't exist
<br> Suggested Solution - Check the validity of the build path or the build name.
<br><br> Thank You"
- name: Sending an email
include_role:
name: email
tasks_from: main.yml
when: path_build_location.stat.exists == False
But when that section triggers and when a second play book tries to send an email. I get the above error. Variables in my ansible config file are fully commented out and all are overidden by the ansible tower variables. All the configurations are rechecked and are according to the ansible documentation. I even can sent the notifications via the ansible tower but not through the mail module in ansible. But I expected to sent the mail automatically by the ansible script. But that didn't happen..
Solution 1:[1]
Your actual error is in module_stdout TypeError: 'NoneType' object is not iterable
. must be referring to a variable which is null or unknown variable type.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | KrishnaR |