Назад | Перейти на главную страницу

установить дату в теле письма через ansible

Я пытаюсь отправить письмо через ansible yaml, которое выглядит примерно так, как показано ниже. Это письмо необходимо отправить за неделю до установки исправления. Я могу запланировать это в cron, но мне нужно отправить электронное письмо за 1 неделю до этого и указать фактическую дату перезагрузки в тексте сообщения.

Я изменил ID электронной почты. Ищу формат даты в теле.

---
- name: sample mail
  mail:
    to:
      - Recipients
      - Pruds <prudhvi@test.com>
    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 }}'

Чтобы использовать подстановку переменных в теле сообщения, сначала нужно сохранить дату в переменной.

Команда оболочки создает структуру, которая сохраняется в переменной reboot_date. Фактический результат можно получить через его stdout атрибут.

Также обратите внимание, что POSIX date команда способна правильно вычислить дату на неделю вперед без необходимости звонить 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 <prudhvi@test.com>
    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 }}'