semaphore/proxmox_delete_user.yml

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