我的项目有一个动态清单,在部署时,host_groups会加载清单清单。同时,我想在role / defaults / main.yml中使用host_vars [master]中的值设置一个名为master_ip的变量。
我的主机分组如下:
[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.1.0.1。这怎么可能?
答案 0 :(得分:1)
我已经解决了此问题,方法是在模板中定义一个宏函数来确定主函数,并将该值返回给master_ip的模板变量。我发现这比获得defaults / main.yml中的值的最初想法更有意义。
{% macro master_ip() -%}
{% for inventory_hostname in groups['master'] -%}
{{ lookup('dig', inventory_hostname) }}
{%- endfor -%}
{% endmacro -%}
在模板中使用
bind {{ master_ip() }}