Ansible - управлять установленными приложениями и отправлять вывод по электронной почте - переменные заполнены неправильно
Так что у меня есть этот playbook, который проверяет, установлены ли выбранные пакеты. ничего особенного там нет. Затем я хотел бы отправить вывод на мой электронный адрес, если все прошло нормально и т. Д.
--- - имя: установить основные приложения хосты: некоторые хосты из инвентаря стать: да задачи: - имя: загрузить глобальные переменные include_vars: файл: /etc/ansible/vars/global.yml имя: глобальный - название: установить MC склонный: имя: mc состояние: настоящее зарегистрироваться: mc - отладка: var: mc - имя: установить HTOP склонный: имя: htop состояние: настоящее зарегистрироваться: htop - название: установить TMUX склонный: имя: tmux состояние: настоящее зарегистрироваться: tmux - имя: установить VIM склонный: имя: vim состояние: настоящее зарегистрироваться: vim - имя: отправить письмо почта: хост: "{{ global.mail_server }}" порт: "{{ global.mail_port }}" subject: базовая установка приложений была выполнена {{ansible_user_id}} подтип: html # body: целевой сервер: {{ansible_hostname}}
# stav MC - {{mc.failed}} {{mc.changed}}
# stav HTOP - {{htop}}
# stav TMUX - {{tmux}}
# stav VIM - {{vim}} тело: "{{ lookup('template', '/etc/ansible/templates/mail.j2') }}" от: адрес по адресу run_once: true
простой шаблон Jinja:
{% для хоста в play_hosts %} {{хост}}:
Полуночный командир
- что-то не так? {{mc.failed}}
- внесены ли какие-либо изменения? {{mc.changed}}
Htop
- что-то не так? {{htop.failed}}
- внесены ли какие-либо изменения? {{mc.changed}}
{% endfor%}
это вывод в моей электронной почте:
host1: Полуночный командир - что-то не так? Ложь - внесены ли какие-либо изменения? Правда Htop - что-то не так? Ложь - внесены ли какие-либо изменения? Правда ________________________________________ host2: Полуночный командир - что-то не так? Ложь - внесены ли какие-либо изменения? Правда Htop - что-то не так? Ложь - внесены ли какие-либо изменения? Правда
но изменения были сделаны только на host1. Если я внесу изменения на host2, везде будет False. Это означает, что переменные, зарегистрированные в модуле apt, заполняются только с первого хоста. Что я здесь не так делаю?
1 ответ
Я был бы более уверен в этом, если бы знал, как именно вы отправляете электронные письма. Но я предполагаю, что вы делаете это с host1.
Проблема может заключаться в том, что вы не получаете доступ к hostvars
правильно в вашем шаблоне электронной почты.
это
{{ mc.failed }}
эффективно ярлык для
{{ hostvars[inventory_hostname].mc.failed }}
Это зависит от того, с какого хоста вы его запускаете.
Попробуйте это в шаблоне (используя ваш host
переменная сверху):
{{ hostvars[host].mc.failed }}
Документы по этой теме можно найти здесь: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html