Jinja2与Ansible,循环中的多个变量

问题描述 投票:0回答:1

我正在使用带有Ansible的Jinja2模板来生成HaProxy配置。当我想在同一个循环中添加多个变量时,我遇到了一些问题。

var文件:

haproxy_url:
  - site1
  - site2

servers:
  - 'server1 192.168.11.2'
  - 'server2 192.168.11.3'

模板文件:

### Backends

{% for url in haproxy_url %}

backend {{ url }}
    errorfile 503 /etc/haproxy/503.http
    mode http
    option http-keep-alive
    cookie SRVNAME insert
    option httpchk GET / HTTP/1.1\r\nHost:\ {{ url }}
{% endfor %}
    http-check expect string Something
    default-server inter 3s fall 3 rise 2
{% for server in servers %}
    server {{ server }}:80 cookie SA check
{% endfor %}

结果现在:

### Backends

backend site1
    errorfile 503 /etc/haproxy/503.http
    mode http
    option http-keep-alive
    cookie SRVNAME insert
    option httpchk GET / HTTP/1.1\r\nHost:\ something

backend site2
    errorfile 503 /etc/haproxy/503.http
    mode http
    option http-keep-alive
    cookie SRVNAME insert
    option httpchk GET / HTTP/1.1\r\nHost:\ something
    server server1 192.168.11.2:80 cookie SA check
    server server2 192.168.11.3:80 cookie SA check

不幸的是,我做错了,我没有第一个块中的服务器。

for-loop ansible jinja2
1个回答
0
投票

那个部分

{% for server in servers %}
    server {{ server }}:80 cookie SA check
{% endfor %}

必须包括在里面

{% for url in haproxy_url %}
...
{% endfor %}

工作,所以将第一个{% endfor %}移到底部。

© www.soinside.com 2019 - 2024. All rights reserved.