diff --git a/proxmox_delete_user.yml b/proxmox_delete_user.yml new file mode 100644 index 0000000..94006e6 --- /dev/null +++ b/proxmox_delete_user.yml @@ -0,0 +1,71 @@ +--- +- 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ération 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: Afficher statut + debug: + msg: "Utilisateur {{ userid }} existe = {{ user_exists }}" + + # --- Supprimer 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 }}" + + - name: Supprimer toutes les ACL associées à l'utilisateur + shell: > + pveum acl delete {{ item.path }} -user {{ userid | quote }} + loop: "{{ acl_list }}" + when: item.ugid == userid + no_log: true + + # --- Supprimer dans Proxmox --- + - name: Supprimer l'utilisateur dans Proxmox + shell: pveum user delete {{ userid | quote }} + when: user_exists + no_log: true + + # --- Supprimer utilisateur Linux si 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à inexistant)." +