是否可以在with_first_found
循环中使用with_items
,例如:
- template:
dest=/foo/{{ item.name }}-{{ item.branch | default('master') }}
src={{ item }}
with_first_found:
- {{ item.name }}-{{ item.branch | default('master') }}
- {{ item.name }}.j2
- apache_site.j2
with_items: apache_sites
似乎无法使用with_nested
。
答案 0 :(得分:4)
不支持组合循环,但您可以将它们用作查找:
vars:
site_locations:
- {{ item.name }}-{{ item.branch | default('master') }}
- {{ item.name }}.j2
- apache_site.j2
tasks:
- template:
dest=/foo/{{ item.name }}-{{ item.branch | default('master') }}
src={{ lookup('first_found', site_locations }}
with_items: apache_sites
答案 1 :(得分:0)
我对tc Server(tomcat)有类似的需求。这就是我所做的:
我将特定于站点的配置放在单独的任务文件(configure-sites.yml)中:
- template:
src: "{{ item }}"
dest: /foo/{{ apache_site.name }}-{{ apache_site.branch | default('master') }}
with_first_found:
- "{{ apache_site.name }}-{{ apache_site.branch | default('master') }}"
- "{{ apache_site.name }}.j2"
- apache_site.j2
从单独的任务文件中我包含了该任务文件,并将其传递给每个站点:
- include: configure-sites.yml
with_items: "{{ apache_sites }}"
loop_control:
loop_var: apache_site
这使用loop_control
,需要Ansible 2.1 +:http://docs.ansible.com/ansible/playbooks_loops.html#loop-control
如果它有帮助,你可以看到我在这里做了什么:
https://github.com/bmaupin/ansible-role-tcserver/blob/master/tasks/main.yml
https://github.com/bmaupin/ansible-role-tcserver/blob/master/tasks/configure-instances.yml