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>
119 lines
4.5 KiB
YAML
119 lines
4.5 KiB
YAML
---
|
|
|
|
# L'URL PUBLIQUE de l'IdP se derive de l'exposition declaree au plan, elle ne se
|
|
# fabrique pas : `keycloak.<domaine>` 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"
|