我正在尝试通过 ansible yaml 发送一封类似于下面的邮件。要求是在修补前一周发送这封电子邮件。我可以在 cron 中安排它,但我需要提前 1 周发送一封电子邮件,并将重启的实际日期放入消息文本中。
我更改了电子邮件 ID。我正在寻找正文中的日期格式。
---
- name: sample mail
mail:
to:
- Recipients
- Pruds <[email protected]>
subject: Ansible-test-mail for server {{ ansible_hostname }}
body: ' Hello Team,
The server {{ ansible_hostname }} will be patched and rebooted on `expr $`date '+%d'` + 7`, `date '+%b'`,`date '+%Y'`. Please be noted.
Regards,
Unix Admins via Ansible
{{ ansible_hostname }}'
答案1
为了在消息正文中使用变量替换,首先需要将日期保存在变量中。
shell 命令生成一个结构,并保存到变量中reboot_date
。实际的输出可以通过其属性访问stdout
。
还要注意,POSIXdate
命令能够正确计算提前一周的日期,而无需调用expr
。事实上,date
根据需要滚动到下个月或下一年会做得更好。
- name: Register reboot date
shell: date -d "today + 7 days" +"%d %b %Y"
register: reboot_date
现在你的邮件任务只需要引用{{ reboot_date.stdout }}
- name: sample mail
mail:
to:
- Recipients
- Pruds <[email protected]>
subject: "Ansible-test-mail for server {{ ansible_hostname }}"
body: ' Hello Team,
The server {{ ansible_hostname }} will be patched
and rebooted on {{ reboot_date.stdout }}. Please be noted.
Regards,
Unix Admins via Ansible
{{ ansible_hostname }}'