我有以下问题:
定义我的nginx站点的host_var(摘录):
nginx_sites:
- server:
name: site1
location1:
config:
name: "/"
[...]
- server:
name: site2
location1:
config:
name: "/"
[...]
location2:
config:
name: "/secretspace"
[...]
htaccess:
username:
password: somepassword
在这个例子中我有2个站点。第二个有两个位置,第二个位置有一个名为“htaccess”的子元素。这是我想要用来创建相应的htaccess文件。
我尝试了这个安全的任务:
- name: Creating htaccess files if nessecary
debug: msg="Huhu {{ item.0.name }} {{ item.1 }}"
with_subelements:
- "{{ nginx_sites }}"
- "htaccess"
- flags:
skip_missing: True
当<{1}}中有一个名为“htaccess”元素的子元素时,应该 imho打印一个调试语句,如果不存在,则跳过它。 但没有任何反应:
nginx_sites
知道我在这里做错了吗?
答案 0 :(得分:1)
with_subelements
用于迭代列表子元素
如果您修改输入数据以创建位置列表而不是命名属性(location1,location2等):
nginx_sites:
- server:
name: site1
locations:
- config:
name: "/"
- server:
name: site2
locations:
- config:
name: "/"
- config:
name: "/secretspace"
htaccess:
username:
password: somepassword
然后,您可以迭代您的位置并选择定义了htaccess的位置:
- name: Creating htaccess files if nessecary
debug: msg="Huhu {{ item.0.server.name }} {{ item.1.htaccess }}"
when: item.1.htaccess is defined
with_subelements:
- "{{ nginx_sites }}"
- "server.locations"
另请注意,您应指定&#34;完整路径&#34;对于子元素。在原始示例中,htaccess
将永远不会匹配任何内容,但server.location2.htaccess
会(虽然此项不是列表的错误上升)。
答案 1 :(得分:1)
这对我有用
- name: Creating htaccess files if nessecary
debug: msg="Huhu {{ item.0.name }} {{ item.1 }}"
with_subelements:
- "{{ nginx_sites }}"
- "htaccess"
- skip_missing: True