Ansible 模板循环变量

Ansible template loop variable

我的清单文件中有三台主机来配置 HAPROXY 设置。使用下面的 ansible tempalte 我能够在配置文件中填充 IP 地址。我还想用索引值更改名称。如何将 kube-1 更改为变量,如 (kube-1, kube-2, kube-3)

模板

{% for host in groups['master'] %}
        server kube-1 {{ hostvars[host]["ansible_default_ipv4"]["address"] }}:30549 check verify none
{% endfor %}

示例输出

server kube-1 x.x.x.x:30549 check verify none
server kube-1 x.x.x.x:30549 check verify none
server kube-1 x.x.x.x:30549 check verify none

需要输出

server kube-1 x.x.x.x:30549 check verify none
server kube-2 x.x.x.x:30549 check verify none
server kube-3 x.x.x.x:30549 check verify none

谢谢 SR

在 jinja2 的 for 控制结构中有一个 loop.index 变量可用。以下应该符合您的期望。

{% for host in groups['master'] %}
        server kube-{{ loop.index }} {{ hostvars[host]["ansible_default_ipv4"]["address"] }}:30549 check verify none
{% endfor %}

参考:https://jinja.palletsprojects.com/en/2.11.x/templates/#for