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
<b>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</b>**]**
Then when I execute a script that uses the mail module in ansible the following error shown in the ansible tower output
<b>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": </b>**"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](http://smtp.sendgrid.net)"
email_port: 587
email_username: "username"
email_password: "password"
email_to: "[admin@example.com](mailto:admin@example.com)"
email_cc:
email_subject: "test"
email_body:
email_subtype: "html"
email_secure: "try"
email_from: "[noreply@example.com](mailto:noreply@example.com) ( Ansible Tower )"
email_bcc:
email_attach:
Following is the way how i refer to the above email playbook from my other playbooks
<b>- 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</b>
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..
Is there something wrong with the email module.. Please give me a explantion. I'm bit stuck in this and I'm a newbie to ansible