Ansible допускает глубоко вложенные диктовки, но на самом деле не позволяет вам извлечь из них много пользы! Вот моя история.
Я пытаюсь настроить несколько INI-файлов с Ansible. Для этого я использую модуль ini_file
. Для этого модуля требуется как минимум четыре элемента информации:
- Путь к файлу
- Раздел
- Опция
- Значение этой опции
Итак, я определил диктовку:
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, как мне зациклить , что?