可以在模板内使用库存主机



我试图在模板中获得服务器的IP,以设置一个具有单个定义IP的监控过程。

配置示例

库存文件

prod_srv_mqtt:
hosts:
mqtt-broker-01:
ansible_host: 10.10.10.10
mqtt-broker-02:
ansible_host: 10.10.10.11

然后我使用这个ansible_host作为模板文件中的目标来配置我的监视:

my-template.json.j2

ping {{ groups.prod_srv_mqtt.mqtt-broker-01.ansible_host }}

,结果在目标上:

ping 10.10.10.10

最终目标是在我的库存中只有一个具有IP设置的变量,并在其他地方使用该变量。

我已经测试了我能想到的大多数语法:

{{ groups.prod_srv_mqtt.mqtt-broker-01 }}
or
{{ hostvars['prod_srv_mqtt'][mqtt-broker-01] }}
or 

部分测试结果:

{{ groups['prod_srv_mqtt'][0] }} -> return mqtt-broker-01
{{ groups['prod_srv_mqtt'][0].ansible_host }} -> return an error
{{ hostvars[groups['prod_srv_mqtt'][0]].ansible_host }} -> return the IP (but with an index as ref)
{{ hostvars[groups['prod_srv_mqtt']['mqtt-broker-01]].ansible_host' }} --> return An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.errors.AnsibleUndefinedVariable: 'list object' has no attribute 'mqtt-broker-01'

注意:剧本在另一个主机上运行,而不是mqtt-broker-01

Zeitounator给出的答案很明显…hostvars‘mqtt-broker-01 .ansible_host。

相关内容

  • 没有找到相关文章

最新更新