82 lines
3.9 KiB
YAML
82 lines
3.9 KiB
YAML
|
|
---
|
||
|
|
# LE POSTE D'EXPLOITATION — la machine depuis laquelle l'écosystème se reconstruit.
|
||
|
|
#
|
||
|
|
# Jusqu'ici, Set-OPS ne s'exécutait que depuis le poste de son mainteneur. L'écosystème
|
||
|
|
# détenait donc la recette (le génome, sur sa forge) sans que personne, chez lui, ne
|
||
|
|
# sache la lire à voix haute. `serveur_ops` est la cuisine : ansible, le génome cloné
|
||
|
|
# depuis SA PROPRE forge, et de quoi rejouer le moteur.
|
||
|
|
#
|
||
|
|
# CE QU'IL N'EMPORTE PAS, ET NE DOIT PAS EMPORTER : le mot de passe de la voûte. Il est
|
||
|
|
# saisi à l'exécution. Une machine qui détient à la fois le plan, l'accès SSH à la flotte
|
||
|
|
# et la clé des secrets n'a plus aucune profondeur : sa compromission est celle de tout
|
||
|
|
# l'écosystème. Voir README.md du rôle.
|
||
|
|
|
||
|
|
serveur_ops_utilisateur: "setops"
|
||
|
|
serveur_ops_racine: "/opt/setops"
|
||
|
|
serveur_ops_venv: "{{ serveur_ops_racine }}/venv"
|
||
|
|
|
||
|
|
# Paquets du poste. `make` parce que l'interface opérateur de Set-OPS est un Makefile ;
|
||
|
|
# `git` parce que le génome vit dans des dépôts ; `rsync` pour les transferts de fichiers
|
||
|
|
# d'Ansible sur les gros arbres.
|
||
|
|
serveur_ops_paquets:
|
||
|
|
- git
|
||
|
|
- make
|
||
|
|
- python3-venv
|
||
|
|
- python3-pip
|
||
|
|
- openssh-client
|
||
|
|
- rsync
|
||
|
|
- ca-certificates
|
||
|
|
|
||
|
|
# Ansible est ÉPINGLÉ sur la même famille que le poste du mainteneur (core 2.18) : un
|
||
|
|
# écosystème qui se reconstruit avec une version différente de celle qui l'a construit ne
|
||
|
|
# reproduit pas la même chose, et l'écart ne se voit qu'au premier échec.
|
||
|
|
serveur_ops_ansible: "ansible-core>=2.18,<2.19"
|
||
|
|
|
||
|
|
# --- D'OÙ VIENT LE GÉNOME ----------------------------------------------------
|
||
|
|
#
|
||
|
|
# DE SA PROPRE FORGE, pas de l'amont. C'est tout l'objet des miroirs : la forge de
|
||
|
|
# l'écosystème détient une copie vivante du génome, resynchronisée toutes les huit
|
||
|
|
# heures. Le poste d'exploitation lit CETTE copie — l'écosystème se reconstruit donc
|
||
|
|
# depuis lui-même, et non depuis son parent.
|
||
|
|
#
|
||
|
|
# Dérivé du groupe `serveur_forgejo` de l'inventaire. Surchargeable pour une forge
|
||
|
|
# externe au plan.
|
||
|
|
serveur_ops_forge_hote: >-
|
||
|
|
{{ (groups['serveur_forgejo'] | default([]) | first | default('')) }}
|
||
|
|
serveur_ops_forge_url: >-
|
||
|
|
https://forge.{{ domaine_interne }}
|
||
|
|
serveur_ops_forge_organisation: "genome"
|
||
|
|
|
||
|
|
# Les dépôts du génome, et où ils atterrissent. Les noms sont ceux que la forge porte
|
||
|
|
# (minuscules) ; les destinations reprennent la disposition du poste du mainteneur, où
|
||
|
|
# le moteur et les instances sont des dossiers frères — c'est cette fraternité que
|
||
|
|
# `scripts/instances.py` découvre.
|
||
|
|
serveur_ops_depots:
|
||
|
|
- { depot: "set-ops-public", dest: "Set-OPS-public", role: "moteur" }
|
||
|
|
- { depot: "ops-patient0", dest: "OPS-Patient0", role: "instance" }
|
||
|
|
|
||
|
|
# L'instance que le poste pilote par défaut (symlink `instance` du moteur).
|
||
|
|
serveur_ops_instance: "OPS-Patient0"
|
||
|
|
|
||
|
|
# --- CLÉ SSH DU POSTE --------------------------------------------------------
|
||
|
|
#
|
||
|
|
# Le poste a besoin d'atteindre toute la flotte en SSH. Il se fabrique donc sa PROPRE
|
||
|
|
# paire, distincte de celle du mainteneur : deux exploitants, deux clés, deux révocations
|
||
|
|
# possibles. La clé publique produite doit être autorisée sur la flotte — le rôle
|
||
|
|
# l'affiche et l'écrit dans un fichier prévu pour être repris au plan (voir README).
|
||
|
|
serveur_ops_cle_type: "ed25519"
|
||
|
|
serveur_ops_cle_generer: true
|
||
|
|
|
||
|
|
# --- CACHE DES COLLECTIONS (côté CONTRÔLEUR) ---------------------------------
|
||
|
|
#
|
||
|
|
# Le poste ne va PAS chercher ses collections sur galaxy.ansible.com : la frontière ne
|
||
|
|
# laisse pas passer ce flux, et ouvrir une règle vers un serveur étranger pour qu'un
|
||
|
|
# écosystème sache se reconstruire serait la mauvaise réponse. Le contrôleur télécharge
|
||
|
|
# une fois dans son cache, puis pousse par SSH — même idiome que `serveur_forgejo`
|
||
|
|
# devant son propre tiers.
|
||
|
|
#
|
||
|
|
# Effet de bord recherché : le poste devient déployable **hors ligne**.
|
||
|
|
serveur_ops_cache_collections: >-
|
||
|
|
{{ (setops_cache_artefacts | default(lookup('env', 'HOME') + '/.cache/setops')) }}/collections
|
||
|
|
serveur_ops_requirements_controleur: "{{ playbook_dir }}/../../requirements.yml"
|