Ansible: диапазон последовательности с использованием переменной цикла

Мне нужно создать определенное количество файлов модулей systemd на основе имени и включенной переменной с количеством файлов для создания, например:

[email protected]
[email protected]
[email protected]

[email protected]
[email protected]
[email protected]
[email protected]

Он работает с вложенным циклом, используя функцию диапазона, но я не понимаю, как использовать переменную цикла (item.1.workers) в параметрах диапазона().

- hosts: localhost
  vars:
    apps:
        - name: app-name
          workers: 3
        - name: script-name
          workers: 5
  connection: local
  tasks:

  - name: test
    debug:
      msg: "{{ item.1.name }}@{{ item.0 }}.service"
    loop: "{{ range(1, 3) | product(apps) | list }}"
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
1
0
1 512
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Давайте создадим списки рабочие в первой задаче и зациклим с подэлементы во второй задаче.

- set_fact:
    apps1: "{{ apps1|default([]) +
               [{'name': item.name,
                 'workers': range(1, item.workers + 1)|list}] }}"
  loop: "{{ apps }}"
- debug:
    msg: "{{ item.0.name }}@{{ item.1 }}.service"
  loop: "{{ apps1|subelements('workers') }}"

дает

  msg: [email protected]
  msg: [email protected]
  msg: [email protected]
  msg: [email protected]
  msg: [email protected]
  msg: [email protected]
  msg: [email protected]
  msg: [email protected]

Другие вопросы по теме