Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send an email with Ansible

I'm trying to send an email using Ansible, but I can't understand how it works as I don't know how to provide user and password for such service (not specified in the documentation).

Both my machine and the email server are in the same network, but I need to be authenticated in order to send the email.

This is my yml file:

--- 
- name: Testing email
  hosts: localhost
  tasks: 
    - name: Send email
      local_action: mail
        host=mail.server.com
        port=993
        subject="Ansible test mail"
        body="Testing email"
        from=my@email
        to="y@email
        charset=utf8

And this is the related content of the hosts' file:

[localhost]
localhost ansible_connection=local

Any idea about how should I configure it? Thanks in advance.

like image 593
jgg Avatar asked Jul 02 '14 11:07

jgg


People also ask

Is Ansible using SSH?

By default, Ansible assumes you are using SSH keys to connect to remote machines.

What is Run_once in Ansible?

Ansible run_once parameter is used with a task, which you want to run once on first host. When used, this forces the Ansible controller to attempt execution on first host in the current hosts batch, then the result can be applied to the other remaining hosts in current batch.

How do you capture command output in Ansible?

To capture the output, you need to specify your own variable into which the output will be saved. To achieve this, we use the 'register' parameter to record the output to a variable. Then use the 'debug' module to display the variable's content to standard out.


1 Answers

Looking at the source code for the mail module ( https://github.com/ansible/ansible/blob/d1effecb2ef073e478c67a7ca39cf56708a66a48/library/notification/mail ) it doesn't look like it supports SMTP authentication.

It shouldn't be too hard to add support for it however. It would require adding the username and password parameters to the module, detecting if they've both been supplied, and if so, calling smtp.login() with those parameters.

In fact, it looks like there's two pull requests to do exactly that at the moment here

https://github.com/ansible/ansible/pull/7213

and here

https://github.com/ansible/ansible/pull/6667

So support will most likely be added in dev soon.

like image 148
Woodham Avatar answered Oct 04 '22 03:10

Woodham