Ansible 任务 - 我如何遍历所有预定义的变量来创建 linux 这种格式的组?

Ansible task - how can I loop over all predefined vars to create linux groups in this format?

我有一个预定义的 ansible 变量,我想从这些变量创建 linux 组。 下面的任务只创建第一个数组中的组 g1,g2,g3 如何遍历所有行以创建其他组?

预定义的 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(',') }}"

使用 jmespath and flattened 检索所有组,然后 split 通过分隔符 ,

循环看起来像,

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

此循环的结果将是一个包含所有组名称的列表。

您可能需要安装 jmespath 模块才能使用 json_query

pip install jmespath