Цикл по сложной структуре данных - PullRequest
0 голосов
/ 31 января 2019

Я использую 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 playbook

- 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

Любая помощь будет принята:)

1 Ответ

0 голосов
/ 31 января 2019

Ничто не сравнится с прочтением документации:)

Этот код Jinja2 дает мне то, что мне нужно из моей структуры данных:

{% for key, value in nodes.iteritems() %}
  {% for container in value.containers %}
    {{ container.name }}: {{ container.ip }}
  {% endfor %}
{% endfor %}

Мне все еще нужно полностью понять различия между словарями и списками:)

...