我正在使用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这是ansible攻略
- 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如有任何帮助,我们将不胜感激:)
发布于 2019-02-01 02:05:14
没有什么比阅读文档更好的了:)
这段Jinja2代码从我的数据结构中得到了我需要的东西:
{% for key, value in nodes.iteritems() %}
{% for container in value.containers %}
{{ container.name }}: {{ container.ip }}
{% endfor %}
{% endfor %}我仍然需要完全理解字典和列表之间的区别:)
https://stackoverflow.com/questions/54466355
复制相似问题