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