我正在尝试创建值与with_items
值匹配的文件。
我有一个像这样的var列表:
sites:
- domain: google.com
cname: blue
- domain: facebook.com
cname: green
- domain: twitter.com
cname: red
我为此任务中列表中的每个对象创建单个文件:
- name: Create files
template:
src: file.conf
dest: "/etc/nginx/conf.d/{{item.cname}}.conf"
with_items: "{{sites}}"
这两者都很有效。我需要在模板文件中创建一个名为blue.conf
的文件,其中只有google.com
。
我尝试了很多变化。我最接近的是:
server {
listen 80;
listen [::]:80;
{% for item in sites %}
server_name {{item.cname}}.es.nodesource.io;
location / {
proxy_pass {{item.domain}};
}
{% endfor %}
}
这将创建单个文件,但每个文件都包含所有域和名称。
答案 0 :(得分:6)
您已经定义了变量item
并将其传递给模板,因此无需再次循环。
尝试:
server {
listen 80;
listen [::]:80;
server_name {{item.cname}}.es.nodesource.io;
location / {
proxy_pass {{item.domain}};
}
}