Как зациклить dict с вложенными списками? - PullRequest
0 голосов
/ 14 ноября 2018

Ansible допускает глубоко вложенные диктовки, но на самом деле не позволяет вам извлечь из них много пользы! Вот моя история.

Я пытаюсь настроить несколько INI-файлов с Ansible. Для этого я использую модуль ini_file. Для этого модуля требуется как минимум четыре элемента информации:

  1. Путь к файлу
  2. Раздел
  3. Опция
  4. Значение этой опции

Итак, я определил диктовку:

  vars:
    conf:
      "/etc/conf1.ini":
        - section: main
          option: foo
          val: bar
        - section: main
          option: baz
          val: qux
      "/etc/otherconf.ini":
        - section: options
          option: flower
          val: bird

И так далее. Итак, я могу использовать:

  - name: Write ini files
    ini_file:
      path: "{{ item.0.key }}"
      section: "{{ item.1.section }}"
      option: "{{ item.1.option }}"
      value: "{{ item.1.val }}"
    loop: "{{ conf | dict2items | subelements('value') }}"

Это ... работает. Я могу продолжать использовать это. Пример вывода /etc/conf1.ini:

[main]
foo = bar
baz = qux

Вопрос: Есть ли лучший способ? Как я могу организовать свои данные для лучшей работы с (новым стилем) Ansible циклов? ( т.е. ничего, что начинается с with_)

Примечание: мне также не нравится использовать полный путь в качестве ключа dict; Я бы предпочел, чтобы это было , например path: "/etc/conf1.ini" каким-то образом.

Примечание 2: мне не нужно иметь все это в одной переменной conf, но если у меня есть одна переменная на файл INI, как мне зациклить , что?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...