Jinja2具有Ansible,循环中有多个变量

时间:2018-09-07 10:59:15

标签: for-loop ansible jinja2

我正在使用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

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

1 个答案:

答案 0 :(得分:0)

零件

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

必须包含在

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

要工作,因此将第一个{% endfor %}移到底部。