通过 ansible 在邮件正文上设置日期

通过 ansible 在邮件正文上设置日期

我正在尝试通过 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 }}'

相关内容