Ansible - 使用模板多循环生成文件
Ansible - Generating a file with template multiple loops
我有这些变量:
ddns_domains:
- domain: domain1.com
hosts:
- "@"
- "cat"
- "dog"
- domain: domain2.com
hosts:
- "ghost"
- "ship"
- "house"
- "door"
- domain: domain3.com
hosts:
- "@"
- "desk"
我想遍历它们并生成这样的文件:
@ domain1.com
cat domain1.com
dog domain1.com
ghost domain2.com
ship domain2.com
house domain2.com
door domain2.com
@ domain3.com
desk domain3.com
我设法正确调试它们:
---
- name:
debug:
msg: "{{ item.0.domain }} {{ item.1 }}"
with_subelements:
- "{{ ddns_domains }}"
- hosts
但是我无法制作模板。我不断收到变量未定义错误。
非常感谢任何帮助。 :)
这是template
shell> cat ddns.txt.j2
{% for i in ddns_domains %}
{% for host in i.hosts %}
{{ host }} {{ i.domain }}
{% endfor %}
{% endfor %}
下面的任务
- template:
src: ddns.txt.j2
dest: ddns.txt
给你想要的
shell> cat ddns.txt
@ domain1.com
cat domain1.com
dog domain1.com
ghost domain2.com
ship domain2.com
house domain2.com
door domain2.com
@ domain3.com
desk domain3.com
我有这些变量:
ddns_domains:
- domain: domain1.com
hosts:
- "@"
- "cat"
- "dog"
- domain: domain2.com
hosts:
- "ghost"
- "ship"
- "house"
- "door"
- domain: domain3.com
hosts:
- "@"
- "desk"
我想遍历它们并生成这样的文件:
@ domain1.com
cat domain1.com
dog domain1.com
ghost domain2.com
ship domain2.com
house domain2.com
door domain2.com
@ domain3.com
desk domain3.com
我设法正确调试它们:
---
- name:
debug:
msg: "{{ item.0.domain }} {{ item.1 }}"
with_subelements:
- "{{ ddns_domains }}"
- hosts
但是我无法制作模板。我不断收到变量未定义错误。
非常感谢任何帮助。 :)
这是template
shell> cat ddns.txt.j2
{% for i in ddns_domains %}
{% for host in i.hosts %}
{{ host }} {{ i.domain }}
{% endfor %}
{% endfor %}
下面的任务
- template:
src: ddns.txt.j2
dest: ddns.txt
给你想要的
shell> cat ddns.txt
@ domain1.com
cat domain1.com
dog domain1.com
ghost domain2.com
ship domain2.com
house domain2.com
door domain2.com
@ domain3.com
desk domain3.com