Я пытаюсь отправить письмо через 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 }}'