Set-OPS-Public/roles/serveur_nextcloud/tasks/oidc.yml
Daniel Allaire 8b008a8cf4 nextcloud : le groupe d'habilitation redevient admin apres une restauration
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>
2026-10-01 20:26:03 -04:00

54 lines
2.2 KiB
YAML

---
- name: SSO OIDC (occ, en www-data avec TLS PG)
become: true
become_user: "{{ serveur_nextcloud_utilisateur }}"
environment:
PGSSLMODE: "{{ serveur_nextcloud_pg_sslmode }}"
PGSSLROOTCERT: "{{ serveur_nextcloud_ca_racine }}"
when: not ansible_check_mode
block:
- name: Installer + activer l'app user_oidc (idempotent)
ansible.builtin.shell:
executable: /bin/bash
cmd: |
set -eo pipefail
OCC="php {{ serveur_nextcloud_racine }}/occ"
if $OCC app:list | grep -qw user_oidc; then echo SETOPS_OK; else $OCC app:install user_oidc && echo SETOPS_CHANGED; fi
register: serveur_nextcloud_oidc_app
changed_when: "'SETOPS_CHANGED' in serveur_nextcloud_oidc_app.stdout"
- name: Ne plus annoncer le formulaire de connexion locale
# Masquage, pas fermeture : `?direct=1` reste le chemin de secours documente par
# l'amont. Voir serveur_nextcloud_connexion_locale dans defaults/main.yml.
ansible.builtin.command:
argv:
- php
- "{{ serveur_nextcloud_racine }}/occ"
- "config:system:set"
- "hide_login_form"
- "--type=boolean"
- "--value={{ 'false' if serveur_nextcloud_connexion_locale | bool else 'true' }}"
changed_when: false
- name: Configurer le fournisseur OIDC Keycloak (upsert idempotent)
ansible.builtin.command:
argv:
- php
- "{{ serveur_nextcloud_racine }}/occ"
- "user_oidc:provider"
- "{{ serveur_nextcloud_oidc_nom }}"
- "--clientid={{ serveur_nextcloud_oidc_client_id }}"
- "--clientsecret={{ serveur_nextcloud_oidc_client_secret }}"
- "--discoveryuri={{ serveur_nextcloud_oidc_discovery }}"
- "--scope=openid email profile"
- "--mapping-uid=preferred_username"
- "--mapping-email=email"
- "--mapping-display-name=name"
- "--mapping-groups={{ serveur_nextcloud_oidc_groupe_claim }}"
- "--group-provisioning=1"
- "--unique-uid=0"
changed_when: false
no_log: true
- name: Verser le groupe d'administration dans `admin` (voir admin.yml)
ansible.builtin.include_tasks: admin.yml