---
- 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