( kallo | 2023. 07. 15., szo – 11:56 )

---
- name: Update group file
  hosts: localhost
  connection=local
  gather_facts: false

  tasks:
    - name: Read passwd file
      shell: "cat /etc/passwd"
      register: passwd_output

    - name: Parse passwd file
      set_fact:
        passwd_entries: "{{ passwd_output.stdout_lines }}"

    - name: Generate group lines
      set_fact:
        group_lines: "{{ group_lines | default([]) + [group_line] }}"
      loop: "{{ passwd_entries }}"
      vars:
        passwd_fields: "{{ item.split(':') }}"
        group_line: "{{ passwd_fields[0] }}:x:{{ passwd_fields[3] }}:"

    - name: Find matching entries in group file
      shell: "grep -E '^{{ item }}:' /etc/group"
      register: matching_entries
      changed_when: false
      loop: "{{ group_lines | map(attribute='group_line') | list }}"
      until: matching_entries is not search('')

    - name: Extract existing user list from matching entries
      set_fact:
        existing_users: "{{ existing_users | default([]) + [existing_user] }}"
      loop: "{{ matching_entries.results }}"
      vars:
        existing_user: "{{ item.stdout.split(':')[3] }}"

    - name: Update group file
      lineinfile:
        path: /etc/group
        line: "{{ item.group_line }}{{ existing_users | join(',') }}"
      loop: "{{ group_lines }}"

chatgptvel generáltattam, telóról vagyok így tesztelni nem tudom, meglepne ha működne, de első ránézésre vannak benne jó ötletek