72 lines
2.1 KiB
YAML
72 lines
2.1 KiB
YAML
---
|
|
- name: Supprimer un utilisateur Proxmox
|
|
hosts: Proxmox
|
|
gather_facts: false
|
|
become: true
|
|
become_user: root
|
|
|
|
vars:
|
|
del_realm: "{{ del_realm | default('pve') }}"
|
|
userid: "{{ del_user }}@{{ del_realm }}"
|
|
|
|
tasks:
|
|
- name: Vérifier que les variables sont renseignées
|
|
assert:
|
|
that:
|
|
- del_user is defined and del_user | length > 0
|
|
fail_msg: "del_user doit être fourni via Semaphore."
|
|
|
|
# --- Récupérer la liste des users ---
|
|
- name: Liste des utilisateurs Proxmox (JSON)
|
|
command: pvesh get /access/users --output-format json
|
|
register: users_json
|
|
changed_when: false
|
|
|
|
- name: Parser liste des users
|
|
set_fact:
|
|
users_list: "{{ (users_json.stdout | default('[]')) | from_json }}"
|
|
|
|
- name: Vérifier si l'utilisateur existe
|
|
set_fact:
|
|
user_exists: "{{ users_list | selectattr('userid','equalto', userid) | list | length > 0 }}"
|
|
|
|
- name: Statut de l'utilisateur
|
|
debug:
|
|
msg: "Utilisateur {{ userid }} existe = {{ user_exists }}"
|
|
|
|
# --- Récupérer les ACL ---
|
|
- name: Récupérer les ACL existantes
|
|
command: pvesh get /access/acl --output-format json
|
|
register: acl_json
|
|
changed_when: false
|
|
|
|
- name: Parser ACL
|
|
set_fact:
|
|
acl_list: "{{ (acl_json.stdout | default('[]')) | from_json }}"
|
|
|
|
# --- Supprimer toutes les ACL associées à cet utilisateur ---
|
|
- name: Supprimer toutes les ACL associées à l'utilisateur
|
|
shell: >
|
|
pveum acl delete {{ item.path | quote }}
|
|
--roles {{ item.roleid | quote }}
|
|
--users {{ userid | quote }}
|
|
loop: "{{ acl_list }}"
|
|
when: item.ugid == userid
|
|
|
|
# --- Supprimer dans Proxmox ---
|
|
- name: Supprimer l'utilisateur dans Proxmox
|
|
shell: pveum user delete {{ userid | quote }}
|
|
when: user_exists
|
|
|
|
# --- Supprimer l'utilisateur Linux si realm = pam ---
|
|
- name: Supprimer l'utilisateur Linux si realm = pam
|
|
user:
|
|
name: "{{ del_user }}"
|
|
state: absent
|
|
remove: true
|
|
when: del_realm == 'pam'
|
|
|
|
- name: Résumé
|
|
debug:
|
|
msg: "Utilisateur {{ userid }} supprimé (ou déjà inex
|