Set-OPS-Public/roles/serveur_nextcloud/tasks/oidc.yml
Daniel Allaire c7378ed7f7 nextcloud : les applications viennent du depot du site, plus de l'app store
user_oidc et richdocuments epinglees (version, sha256), tenues par site-cache-01 dans le depot de binaires, installees par app_tierce.yml : site d'abord, amont en repli dit, somme puis signature (occ integrity:check-app), activation. P70 comprend les listes d'artefacts. L'app store a 77 ko/s avait arrete la reconstruction de Technolibre.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 22:47:33 -04:00

50 lines
2 KiB
YAML

---
# L'APPLICATION VIENT DU DEPOT DU SITE, PLUS DE L'APP STORE (2026-10-08) : `app_tierce.yml`.
- name: Installer l'app user_oidc (depot du site, somme, signature, activation)
ansible.builtin.include_tasks: app_tierce.yml
vars:
serveur_nextcloud_app_id: user_oidc
- 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: 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