我正在使用带有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 server in servers %}
server {{ server }}:80 cookie SA check
{% endfor %}
必须包括在里面
{% for url in haproxy_url %}
...
{% endfor %}
工作,所以将第一个{% endfor %}
移到底部。