--- # L'URL PUBLIQUE de l'IdP se derive de l'exposition declaree au plan, elle ne se # fabrique pas : `keycloak.` n'est publie nulle part (voir resoudre_idp). - name: Resoudre le fournisseur d'identite (role partage) ansible.builtin.include_role: name: resoudre_idp vars: resoudre_idp_realm: "{{ serveur_nextcloud_oidc_realm }}" - name: Exiger les secrets Nextcloud (Vault) ansible.builtin.assert: that: - serveur_nextcloud_admin_password | length > 0 - (not (serveur_nextcloud_oidc_actif | bool)) or (serveur_nextcloud_oidc_client_secret | length > 0) fail_msg: "vault_nextcloud_admin (et vault_nextcloud_oidc si OIDC actif) sont requis (Ansible Vault)." - name: Resoudre la base de donnees depuis le registre (role partage) ansible.builtin.include_role: name: resoudre_base vars: resoudre_base_groupe: "{{ serveur_nextcloud_groupe }}" - name: Adopter les facts de base pour Nextcloud ansible.builtin.set_fact: serveur_nextcloud_db_password: "{{ resoudre_base_db_password }}" serveur_nextcloud_db_host: "{{ resoudre_base_db_host }}" serveur_nextcloud_db_port: "{{ resoudre_base_db_port }}" no_log: true # ETAT DE DEPART, RELEVE AVANT L'INSTALLATION : apres, la configuration existerait et la # base aurait ses tables — on ne saurait plus si l'on part de rien. Voir `restaurer.yml`. - name: Restauration — la configuration existe-t-elle deja ? ansible.builtin.stat: path: "{{ serveur_nextcloud_racine }}/config/config.php" register: serveur_nextcloud_config_initiale - name: Restauration — le serveur de base de Nextcloud ansible.builtin.set_fact: serveur_nextcloud_hote_bd: "{{ (serveurs_bd | default({}))[resoudre_base_entree.serveur].hote }}" serveur_nextcloud_nom_bd: "{{ resoudre_base_entree.base | default(serveur_nextcloud_db_name) }}" - name: Restauration — la base de Nextcloud a-t-elle deja des tables ? ansible.builtin.command: argv: - runuser - -u - postgres - -- - psql - -tAX - -d - "{{ serveur_nextcloud_nom_bd }}" - -c - >- select count(*) from information_schema.tables where table_schema not in ('pg_catalog','information_schema') delegate_to: "{{ serveur_nextcloud_hote_bd }}" register: serveur_nextcloud_tables_initiales changed_when: false check_mode: false failed_when: false - name: Paquets (PHP-FPM + extensions, nginx, redis) ansible.builtin.import_tasks: paquets.yml - name: PHP (tuning 512M + TLS PG pour php-fpm) ansible.builtin.import_tasks: php.yml - name: Installation Nextcloud (tarball + occ maintenance:install) ansible.builtin.import_tasks: installer.yml - name: Exposition (vhost nginx local, MIME .mjs) ansible.builtin.import_tasks: exposition.yml - name: Configuration (trusted_proxies, overwrite, redis, CA, anti-SSRF) ansible.builtin.import_tasks: configurer.yml - name: SSO OIDC (Keycloak, app user_oidc) ansible.builtin.import_tasks: oidc.yml when: serveur_nextcloud_oidc_actif | bool - name: Collabora / Office (app richdocuments, WOPI) ansible.builtin.import_tasks: collabora.yml when: serveur_nextcloud_office_actif | bool - name: Identite visuelle Alliance Boreale (theme + ciel etoile) ansible.builtin.import_tasks: theme.yml when: serveur_nextcloud_branding | bool # --- Sonde de supervision (docs/supervision-conception.md) -------------------------- # Le role qui possede la verite depose sa propre sonde ; le porteur (`client_sante`) la # fait tourner et pousse le verdict, sans savoir ce qu'elle mesure. - name: Etat d'une incarnation precedente (base, fichiers, configuration) ansible.builtin.import_tasks: restaurer.yml # APRES LA REMISE, LES HABILITATIONS DU PLAN (2026-10-01) : la base restauree porte l'etat # d'avant ; l'appartenance du groupe d'habilitation a `admin` est une regle du plan, pas un # etat a conserver — on la rejoue sur ce qui vient d'etre remis. - name: Habilitations du plan sur le Nextcloud restaure ansible.builtin.include_tasks: admin.yml when: - serveur_nextcloud_oidc_actif | bool - client_backup_restauration.etat | default('') == 'restaure' - name: Assurer le repertoire des sondes de supervision ansible.builtin.file: path: /usr/local/lib/setops/sondes state: directory owner: root group: root mode: "0755" - name: Deposer la sonde « collaboration » ansible.builtin.template: src: sonde-collaboration.sh.j2 dest: /usr/local/lib/setops/sondes/collaboration.sh owner: root group: root mode: "0750"