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

Другие вопросы по тегам