我正在使用Ansible和Jinja2填充一些配置文件。我正在尝试遍历复杂的数据结构,但无法获取它来打印我所需的内容。
这是我的数据结构的一个示例:
nodes:
server-1:
attrib1: value1
containers:
- name: container-1
ip: 10.2.33.223
- name: container-2
ip: 10.2.33.239
server-2:
attrib1: value1
containers:
- name: container-3
ip: 10.2.34.48
- name: container-4
ip: 10.2.34.50
这是有趣的剧本
- hosts: localhost
vars_files:
- "vars/nodes.yml"
tasks:
- name: create configs
template:
src: "template.j2"
dest: "config.cfg"
jinja2模板将是这样,但我无法正确理解
{% for container in nodes.containers %}
{{ container.name }}: {{ container.ip }}
{% endfor %}
我正在尝试获取所有这样的容器名称和IP:
container-1: 10.2.33.223
container-2: 10.2.33.229
container-3: 10.2.34.48
container-4: 10.2.34.50
任何帮助将不胜感激:)
答案 0 :(得分:0)
阅读文档无所不能:)
此Jinja2代码从我的数据结构中获取了我需要的东西:
{% for key, value in nodes.iteritems() %}
{% for container in value.containers %}
{{ container.name }}: {{ container.ip }}
{% endfor %}
{% endfor %}
我仍然需要完全理解字典和列表之间的区别:)