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>
46 lines
2 KiB
YAML
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
|