gpt4 book ai didi

templates - 根据组更改 Ansible 模板中的变量

转载 作者:行者123 更新时间:2023-12-02 22:05:24 25 4
gpt4 key购买 nike

我有一个 Ansible 库存文件,有点像这样:

[es-masters]
host1.my-network.com

[es-slaves]
host2.my-network.com
host3.my-network.com

[es:children]
es-masters
es-slaves

我还有一个 Jinja2 模板文件,如果主机属于“es-masters”组,则需要将某个值设置为“true”。

我确信有一种简单的方法可以做到这一点,但经过一些谷歌搜索和阅读文档后,我一片空白。

我正在寻找像这样简单且程序化的东西来放入 Jinja2 模板中:

{% if hostvars[host][group] == "es-masters" %}
node_master=true
{% else %}
node_master=false
{% endif %}

有什么想法吗?

最佳答案

反之亦然。您检查标识符(主机名或 IP 或 list 中的任何内容)是否在定义的组中。如果该组位于主机变量中则不会。

{% if ansible_fqdn in groups['es-masters'] %}
node_master=true
{% else %}
node_master=false
{% endif %}

但是,你最好应该这样做:

在模板中提供默认值

# role_name/templates/template.j2
node_master={{ role_name_node_master | default(true) }}

比 group_vars 中的覆盖

# group_vars/es-masters.yml
role_name_node_master: false

关于templates - 根据组更改 Ansible 模板中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25552766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com