Ansible 如何从库存动态设置defaults/main.yml中的值
我有一个项目的动态清单,在部署时,主机组会加载清单列表。同时,我想在role/defaults/main.yml中设置一个名为master_ip的变量,该变量的值来自host_vars[master] 我的主机分组如下:Ansible 如何从库存动态设置defaults/main.yml中的值,ansible,Ansible,我有一个项目的动态清单,在部署时,主机组会加载清单列表。同时,我想在role/defaults/main.yml中设置一个名为master_ip的变量,该变量的值来自host_vars[master] 我的主机分组如下: [master] xx.eco.project.com [slave] yy.eco.project.com zz.eco.project.com 因为我不能在YAML中使用if/else。就像我使用的模板一样 {% if inventory_hostname in gr
[master]
xx.eco.project.com
[slave]
yy.eco.project.com
zz.eco.project.com
因为我不能在YAML中使用if/else。就像我使用的模板一样
{% if inventory_hostname in groups['master'] %}
master_ip: {{ lookup('dig', inventory_hostname) }}
作为master_ip:10.0.1.1。怎么可能呢 我通过在模板中定义宏函数来确定主节点,并将值返回到主节点的模板变量,从而解决了这个问题。我发现这比在defaults/main.yml中获取值的最初想法更有意义
{% macro master_ip() -%}
{% for inventory_hostname in groups['master'] -%}
{{ lookup('dig', inventory_hostname) }}
{%- endfor -%}
{% endmacro -%}
在模板中使用
bind {{ master_ip() }}
有什么问题吗:master_ip:{{lookup'dig',host}}?是关于什么的?