Ansible задача - как я могу l oop по всем предопределенным переменным для создания linux групп в этом формате? - PullRequest
2 голосов
/ 15 апреля 2020

У меня есть предопределенные ansible переменные, и я хочу создать linux группы из этих переменных. Приведенное ниже задание создает только группы в первом массиве g1, g2, g3 Как я могу l oop по всем строкам для создания других групп?

Предопределенные ansible переменные:

user_details:
  - { name: "user1", groups: 'g1,g2,g3' }
  - { name: "user2", groups: 'g4,g5' }

Задача следующая:

- name: Create Group
  group:
    name: "{{ item }}"
    state: present
  loop: "{{ user_details.0.groups.split(',') }}"

1 Ответ

1 голос
/ 15 апреля 2020

Используйте jmespath и flattened, чтобы получить все группы, а затем split их через разделитель ,.

The l oop будет выглядеть так:

loop: "{{ lookup('flattened', (user_details | json_query(\"[*].groups\")) ).split(',') }}"

Результатом этого l oop будет список, содержащий все имена групп.

Возможно, вам придется установить модуль jmespath для используйте json_query

pip install jmespath
...