вложенные вложенные циклы с подэлементами - PullRequest
0 голосов
/ 27 сентября 2018

Я борюсь с проблемой вложенного цикла, где первый цикл находится на ключе элемента массива, а внутренний цикл на другой переменной.

У меня есть набор хостов, собранных по типам, поэтому у меня есть раздел для каждого типа в инвентаре, и я добавил каждый хост в правом разделе.

[typeA]
host1
host2]

[typeB]
host3
host4

Для каждого типа хостов у меня есть список модулей для установки на каждом хосте этоготип.Я создал конфигурацию JSON для сбора списка модулей по типу.

{
    "modules" : [
        {
            "type": "typeA",
            "list": ["module1","module2"]
        },
        {
            "type": "typeB",
            "list": ["module3","module4"]
        }
    ]
}

Мне нужно создать на каждом хосте и для каждого установленного модуля файл, содержащий идентификаторы хостов всех хостов, принадлежащих к одному и тому же типу.текущая группа.

Например: На хосте 1 я должен создать 2 файла с именами module1.cfg и module2.cfg, которые содержат hostId для host1 и host2. На хосте 2 я должен создать 2 файла с именем module3.cfg и module4.cfg, содержащие hostId host3 и host4

Я предпочитаю подготовить файлы конфигурации на localhost (хосте, на котором я запускаю ansible)

Проблема в том, чтобы иметь двойной цикл: 1) Первый цикл для каждого модуля правильного типа 2) Второй цикл для каждого хоста, принадлежащего к типу текущего хоста

Проблема в том, что для первого цикла из-за структуры данных мне нужноцикл = использование "with_subelements:"

Кажется невозможным вложить классический вид (используя with_items) в цикл, используя "with_subelements: "

Есть идеи?

Моя задача: тип_узла - это тип хостов, которые я хочу установить:" typeA "или" typeB "

- name: "Only loop for modules"
  debug:
    msg: "Module = {{ item.1 }}"
  with_subelements:
    - "{{modules}}"
    - list
  when: item.0.type == node_type
  delegate_to: localhost

Но я могудобавить новый with_items: "{{groups [node_type]}}": ОШИБКА!повторяющийся цикл в задании: items

Помощь приветствуется!Xavier

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