--- - 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à inexistant)."