要在Ansible中发送合并邮件给清单主机,可以使用Ansible的邮件模块来实现。下面是一个示例代码:
- name: Send merged email to inventory hosts
hosts: localhost
tasks:
- name: Read email template file
slurp:
src: path/to/email_template.html
register: email_template
- name: Generate merged email content
set_fact:
merged_email_content: "{{ email_template.content | b64decode }}"
- name: Send merged email
mail:
host: smtp.example.com
port: 587
username: email@example.com
password: mysecretpassword
from: email@example.com
to: "{{ inventory_hostname }}"
subject: "Merged email for {{ inventory_hostname }}"
body: "{{ merged_email_content }}"
content_type: text/html
在这个示例中,假设有一个名为email_template.html
的邮件模板文件,保存在path/to/email_template.html
路径下。首先使用slurp
模块读取邮件模板文件,并将其内容存储在email_template
变量中。
然后,使用set_fact
模块将email_template.content
解码为字符串,并存储在merged_email_content
变量中。
最后,使用mail
模块发送邮件,指定SMTP服务器的主机名、端口、用户名、密码以及发件人和收件人的电子邮件地址。邮件的主题是Merged email for {{ inventory_hostname }}
,其中{{ inventory_hostname }}
是清单主机的名称。邮件内容是之前解码的邮件模板内容,指定content_type
为text/html
,表示邮件的内容为HTML格式。
请根据实际情况修改SMTP服务器的配置和邮件模板文件的路径。