A lot of people use Gmail daily to send and receive mail. The estimated number of global users in 2020 was 1.8 billion. Gmail works on the SMTP protocol over port number 587. In this article, I demonstrate how to configure your SMTP web server and send mail automatically from Ansible and using ansible-vault to secure passwords.

Encrypt your password file

The ansible-vault command creates an encrypted file where you can store your confidential details.

ansible-vault create secret.yml
Image
Create secret

Gmail setup

By default, Gmail doesn’t permit Less secure app access to their web server. For this, you have a solution: You can change the setting to enable Less secure app access.

Go to your Google account:

Image
Account settings

 

Click on Security and scroll down:

Image
Gmail security settings

 

Click on Less secure app access and allow it:

Image
Provide less secure app access

Email Playbook

Configure the localhost as your web server, which is working on SMTP protocol over port 587. Username, password, and to fields are the Ansible modules. Subject and body are modules in which you can provide our subject and body content. The following is the email.yml file.

---
- hosts: localhost
  vars_files: secret.yml
  tasks:
  - name: Sending an email using Ansible
    mail:
      host: smtp.gmail.com
      port: 587
      username: 500069614@stu.upes.ac.in
      password: "{{ p }}"
      to: mrsarthak001@gmail.com
      subject: Email By Ansible
      body: Test successful
      delegate_to: localhost

Run the playbook

Run the playbook with the given command below. Use –ask-vault-pass flag while running the playbook with this keyword Ansible ask vault password and run your playbook.

ansible-playbook –ask-vault-pass email.yml
Image
Send email

 

The email is sent successfully:

Email sent by Ansible

Wrap up

These steps demonstrate how to configure Gmail to send email messages from Ansible. In addition, you can secure your passwords in Ansible Vault.