Ansible - 管理已安装的应用程序并通过电子邮件发送输出 - 变量填写错误

Ansible - 管理已安装的应用程序并通过电子邮件发送输出 - 变量填写错误

所以我有这个剧本,它检查是否安装了选定的包。没什么特别的。然后我想将输出发送到我的电子邮件,如果一切顺利的话等等。

---
 - 名称:安装基本应用程序
   主机:库存中的一些主机
   成为:是
   任务:
     - 名称:加载全局变量
       包含变量:
               文件:/etc/ansible/vars/global.yml
               名称:全球

     - 名称:安装 MC
       易于:
               姓名: mc
               状态:现在
       注册:mc

     - 调试:
             变量: mc

     -名称:安装HTOP
       易于:
               名称:htop
               状态:现在
       注册:htop

     - 名称:安装 TMUX
       易于:
               名称: tmux
               状态:现在
       注册:tmux

     - 名称:安装 VIM
       易于:
               名称:vim
               状态:现在
       注册:vim


     - 姓名:发送电子邮件
       邮件:
             主机:“{{ global.mail_server }}”
             端口:“{{ global.mail_port }}”
             主题:基本应用程序安装由 {{ ansible_user_id }} 运行
             子类型:html
             # 主体:目标服务器:{{ ansible_hostname }} 
# stav MC - {{ mc.failed }} {{ mc.changed }}
# stav HTOP - {{ htop }}
# stav TMUX - {{ tmux }}
# stav VIM - {{ vim }} 正文:“{{lookup('template','/etc/ansible/templates/mail.j2')}}” 来自:地址 收件人:地址 运行一次: true

简单的 Jinja 模板:

{% for host in play_hosts %}
{{ 主持人 }}:
午夜指挥官
- 有什么问题吗?{{ mc.failed }}
- 有任何更改吗?{{ mc.changed}}
顶部
- 有什么问题吗?{{ htop.failed}}
- 有任何更改吗?{{ mc.changed}}

{% 结束 %}

这是我的电子邮件中的输出:

主机1:
午夜指挥官
- 有什么问题吗? 错误
- 有改变吗?是的
顶部
- 有什么问题吗? 错误
- 有改变吗?是的
________________________________________
主机2:
午夜指挥官
- 有什么问题吗? 错误
- 有改变吗?是的
顶部
- 有什么问题吗? 错误
- 有改变吗?是的

但只在 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#accessing-information-about-other-hosts-with-magic-variables

相关内容