我怎样才能在收集的事实中循环使用ansible playbook? 我试过了:
...
haproxy_backends:
- name: 'backend'
servers:
{% for host in groups['app-servers'] %}
- name: "{{ hostvars[host]['ansible_hostname'] }}"
ip: "{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}"
{% endfor %}
但这不起作用,会导致语法错误。甚至可以在剧本中使用jinja吗?
我使用ansible galaxy角色(info.haproxy),我不想更改提供的模板。
答案 0 :(得分:2)
不,你不能这样做。
这必须在模板中完成,例如:
template / haproxy.cfg.j2:
...
{% for host in groups['app-servers'] %}
backend {{ hostvars[host]['ansible_hostname'] }}
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}:1234 check inter 5000 slowstart 2m
{% endfor %}
...
并使用:
tasks:
- name: Deploy haproxy config
template: src=templatepath/haproxy.cfg.j2 dest=/etc/haproxy/haproxy.cfg
你明白了,YMMV。
祝你好运。