Set-OPS-Public/roles/serveur_nextcloud/tasks/installer.yml
Daniel Allaire 26dc0469be get_url : garder les artefacts epingles a une version
Recensement apres l'echec du passage d'idempotence : 9 get_url sans aucune
garde, 1 avec.

Les quatre artefacts epingles (forgejo, keycloak, nextcloud, oauth2-proxy)
sont immuables PAR CONSTRUCTION — leur chemin de destination porte la version.
Les retelecharger n'a aucun sens, les recontacter encore moins. Gardes par une
verification d'existence.

Restent cinq cles de signature apt et un trousseau .deb, recuperes a chaque
passage : cinq serveurs externes x quatorze hotes = 70 allers-retours par
deploiement. Les garder supprimerait la dependance au prix de ne plus detecter
une rotation ; une cle tournee casse apt bruyamment, donc l'oubli se voit.
Arbitrage a rendre — pas a moi.

Sur une plateforme souveraine la question merite d'etre posee : combien de
serveurs tiers doivent etre joignables pour redeployer ce qu'on possede deja ?

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 14:01:12 -04:00

46 lines
2 KiB
YAML

---
# Le chemin de destination PORTE la version : cet artefact est immuable une fois pose.
# Sans garde, `get_url` recontacte le serveur distant a CHAQUE deploiement — et un
# serveur tiers lent suffit alors a faire tomber un deploiement de flotte. Constate le
# 2026-08-09 sur le binaire Forgejo, meme motif ici.
- name: L artefact de cette version est-il deja pose ?
ansible.builtin.stat:
path: "/tmp/nextcloud-{{ serveur_nextcloud_version }}.tar.bz2"
register: serveur_nextcloud_archive_present
- name: Telecharger le tarball Nextcloud (version epinglee)
when: not serveur_nextcloud_archive_present.stat.exists
ansible.builtin.get_url:
url: "{{ serveur_nextcloud_url }}"
dest: "/tmp/nextcloud-{{ serveur_nextcloud_version }}.tar.bz2"
mode: "0644"
- name: Extraire Nextcloud dans /var/www (si absent)
ansible.builtin.unarchive:
src: "/tmp/nextcloud-{{ serveur_nextcloud_version }}.tar.bz2"
dest: "/var/www/"
remote_src: true
owner: "{{ serveur_nextcloud_utilisateur }}"
group: "{{ serveur_nextcloud_utilisateur }}"
creates: "{{ serveur_nextcloud_racine }}/occ"
- name: Installer Nextcloud (occ maintenance:install, PG en TLS ; une seule fois)
ansible.builtin.command:
cmd: >-
php {{ serveur_nextcloud_racine }}/occ maintenance:install
--database pgsql
--database-host {{ serveur_nextcloud_db_host }}
--database-name {{ serveur_nextcloud_db_name }}
--database-user {{ serveur_nextcloud_db_user }}
--database-pass {{ serveur_nextcloud_db_password }}
--admin-user {{ serveur_nextcloud_admin_user }}
--admin-pass {{ serveur_nextcloud_admin_password }}
--data-dir {{ serveur_nextcloud_data_dir }}
creates: "{{ serveur_nextcloud_racine }}/config/config.php"
become: true
become_user: "{{ serveur_nextcloud_utilisateur }}"
environment:
PGSSLMODE: "{{ serveur_nextcloud_pg_sslmode }}"
PGSSLROOTCERT: "{{ serveur_nextcloud_ca_racine }}"
no_log: true
when: not ansible_check_mode