L'etape tournait avant la remise du Nextcloud restaure, sur une base ou le groupe n'existait pas encore : la base d'avant revenait avec son etat d'avant. sysadmin etait admin chez Technolibre, pas chez Chezlepro. Sortie dans admin.yml et rejouee apres la remise. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
2.2 KiB
YAML
44 lines
2.2 KiB
YAML
---
|
|
# LE GROUPE D'HABILITATION DEVIENT ADMINISTRATEUR DE NEXTCLOUD — sorti de `oidc.yml` le
|
|
# 2026-10-01 pour etre joue AUSSI apres la remise d'un Nextcloud restaure (`main.yml`).
|
|
#
|
|
# Dans une reconstruction, l'etape tournait AVANT la remise : sur la base neuve, ou le groupe
|
|
# n'existe pas encore, elle passait sans rien faire — puis la base d'avant revenait avec son
|
|
# etat d'avant. `sysadmin` etait administrateur chez Technolibre (verse par un deploiement
|
|
# anterieur, garde par la sauvegarde) et ne l'etait pas chez Chezlepro (jamais verse) :
|
|
# chaque reconstruction le ramenait tel quel.
|
|
#
|
|
# Les groupes projetes depuis LDAP arrivent dans Nextcloud, mais y etre membre
|
|
# ne donne aucun pouvoir : l'administration est un GROUPE NEXTCLOUD nomme
|
|
# `admin`. On y verse le groupe d'habilitation, une fois qu'il existe.
|
|
#
|
|
# Sans cela, `meta/acces.yml` restait `porte_par: aucun` et l'administration
|
|
# passait par le compte local de secours — ce qui contredit « une identite, un
|
|
# mot de passe » (2026-08-07).
|
|
- name: Verser le groupe d'administration dans le groupe `admin` de Nextcloud
|
|
ansible.builtin.shell:
|
|
executable: /bin/bash
|
|
cmd: |
|
|
set -eo pipefail
|
|
OCC="php {{ serveur_nextcloud_racine }}/occ"
|
|
G="{{ serveur_nextcloud_oidc_groupe_admin }}"
|
|
# Le groupe n'existe qu'apres la premiere connexion d'un membre : son
|
|
# absence n'est donc PAS une erreur au premier deploiement.
|
|
if ! $OCC group:list --output=json | grep -q "\"$G\""; then
|
|
echo "SETOPS_OK (groupe '$G' pas encore provisionne — a la premiere connexion)"
|
|
exit 0
|
|
fi
|
|
CHANGED=0
|
|
for U in $($OCC group:list --output=json | python3 -c "
|
|
import json,sys
|
|
print(' '.join((json.load(sys.stdin).get('$G') or [])))"); do
|
|
if ! $OCC group:list --output=json | python3 -c "
|
|
import json,sys
|
|
sys.exit(0 if '$U' in (json.load(sys.stdin).get('admin') or []) else 1)"; then
|
|
$OCC group:adduser admin "$U" >/dev/null && CHANGED=1
|
|
fi
|
|
done
|
|
[ "$CHANGED" = 1 ] && echo SETOPS_CHANGED || echo SETOPS_OK
|
|
register: serveur_nextcloud_grp_admin
|
|
changed_when: "'SETOPS_CHANGED' in serveur_nextcloud_grp_admin.stdout"
|
|
when: serveur_nextcloud_oidc_groupe_admin | length > 0
|