You've already forked role_users
52 lines
1.6 KiB
YAML
52 lines
1.6 KiB
YAML
---
|
|
# tasks file for users
|
|
|
|
- name: Build users list
|
|
ansible.builtin.set_fact:
|
|
users: "{{ users + specific }}"
|
|
when: specific | length > 0
|
|
loop: "{{ lookup('ansible.builtin.varnames', '^users.+', wantlist=True) }}"
|
|
vars:
|
|
specific: "{{ lookup('ansible.builtin.vars', item, default='') }}"
|
|
|
|
- name: Create groups with the users name
|
|
ansible.builtin.group:
|
|
name: "{{ item.name }}"
|
|
state: "{{ item.state | default('present') }}"
|
|
when: user.group | default([]) | length == 0
|
|
become: true
|
|
loop: "{{ users }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
|
|
- name: Create other groups
|
|
ansible.builtin.group:
|
|
name: "{{ item.1 }}"
|
|
when: item.state | default('present') == 'present'
|
|
become: true
|
|
loop: "{{ users | subelements('groups', skip_missing=True) }}"
|
|
loop_control:
|
|
label: "{{ item.1 }}"
|
|
|
|
- name: Create users
|
|
ansible.builtin.user:
|
|
name: "{{ item.name }}"
|
|
comment: "{{ item.comment | default(omit) }}"
|
|
password: "{{ item.password | default(omit) }}"
|
|
password_lock: "{{ item.password_lock | default(omit) }}"
|
|
home: "{{ item.home | default(omit) }}"
|
|
shell: "{{ item.shell | default(omit) }}"
|
|
group: "{{ item.group | default(item.name) }}"
|
|
groups: "{{ item.groups | default(omit) }}"
|
|
state: "{{ item.state | default('present') }}"
|
|
become: true
|
|
loop: "{{ users }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
|
|
- name: Exclude users to delete
|
|
ansible.builtin.set_fact:
|
|
users: "{{ users | ansible.builtin.difference(users_to_delete) }}"
|
|
vars:
|
|
users_to_delete: "{{ users | selectattr('state', 'defined') | selectattr('state', 'equalto', 'absent') }}"
|