poste d'exploitation : patient 0 sait lire son propre genome
Fonction `ops` en zone Services-infra, machine ops-01 (10.29.19.41, VMID 129404101). Sans client_backup : le poste ne detient aucun etat propre, tout ce qu'il porte se recompose depuis la forge. Ajoute aussi le group_vars serveur_nginx qui manquait -- sans lui, l'edge publiait la forge derriere un certificat auto-signe. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
8c4a39b8b1
commit
b2d087356c
6 changed files with 65 additions and 1 deletions
|
|
@ -33,4 +33,19 @@ organisation: Alliance Boréale
|
||||||
# qu'on amorce — une adresse en @genese.internal serait un piege parfait.
|
# qu'on amorce — une adresse en @genese.internal serait un piege parfait.
|
||||||
amorcage_acces_courriel: sysadmin@chezlepro.ca
|
amorcage_acces_courriel: sysadmin@chezlepro.ca
|
||||||
|
|
||||||
setops_plan_dir: "{{ playbook_dir }}/../../instance/plan"
|
# LE PLAN SUIT L'INVENTAIRE, PAS LE SYMLINK (2026-08-23).
|
||||||
|
#
|
||||||
|
# La valeur precedente etait `{{ playbook_dir }}/../../instance/plan` : le lien
|
||||||
|
# `instance` du moteur, en dur. Tout role lisant le plan lisait donc celui de
|
||||||
|
# l'instance POINTEE PAR LE LIEN, et non celle qu'on deploie.
|
||||||
|
#
|
||||||
|
# CE QUE CA A DONNE. En deployant patient 0 avec `SETOPS_INSTANCE`, le plancher
|
||||||
|
# /etc/hosts de `ops-01` a recu les FQDN de CHEZLEPRO -- auth.chezlepro.internal,
|
||||||
|
# forge.chezlepro.internal... -- pointes sur l'edge de patient 0. Un ecosysteme
|
||||||
|
# annoncait les noms d'un autre. Neuf roles lisent cette variable ; le plancher est
|
||||||
|
# simplement celui qui l'a rendu visible.
|
||||||
|
#
|
||||||
|
# `inventory_dir` est le dossier de l'inventaire REELLEMENT charge. Le plan qui a
|
||||||
|
# engendre cet inventaire est son voisin : les deux ne peuvent plus se contredire,
|
||||||
|
# et l'expression reste juste qu'on passe par le symlink ou par SETOPS_INSTANCE.
|
||||||
|
setops_plan_dir: "{{ inventory_dir }}/../../plan"
|
||||||
|
|
|
||||||
20
inventories/production/group_vars/serveur_nginx.yml
Normal file
20
inventories/production/group_vars/serveur_nginx.yml
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
# L'EDGE DOIT PORTER LES NOMS QU'IL PUBLIE (2026-08-23).
|
||||||
|
#
|
||||||
|
# Sans ce fichier, `client_pki` n'emet le certificat de l'edge qu'avec ses propres noms
|
||||||
|
# (`infra-edge-01.genese.internal`), et nginx retombe sur le certificat auto-signe de
|
||||||
|
# Debian pour tout FQDN expose. Le service repond, la page s'affiche apres un
|
||||||
|
# avertissement — et rien ne signale la panne. C'est ce qui s'est passe ici : la forge de
|
||||||
|
# patient 0 etait publiee derriere un `ssl-cert-snakeoil.pem`, et `git clone` a ete le
|
||||||
|
# premier a refuser, a juste titre.
|
||||||
|
#
|
||||||
|
# `sans_exposition` est derive du plan (les `expose:` des applications).
|
||||||
|
client_pki_sans: >-
|
||||||
|
{{ ([ansible_fqdn | default(ansible_hostname), ansible_hostname, ansible_host]
|
||||||
|
+ (sans_exposition | default([])))
|
||||||
|
| select | unique | list }}
|
||||||
|
serveur_nginx_certificat: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.crt"
|
||||||
|
serveur_nginx_cle: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.key"
|
||||||
|
# Un cert renouvele sur disque reste PERIME en memoire tant que nginx n'a pas recharge.
|
||||||
|
client_pki_reload_services:
|
||||||
|
- nginx
|
||||||
|
|
@ -13,11 +13,13 @@ all:
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
|
ops-01: null
|
||||||
client_unbound:
|
client_unbound:
|
||||||
hosts:
|
hosts:
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
|
ops-01: null
|
||||||
hotes_actifs:
|
hotes_actifs:
|
||||||
hosts:
|
hosts:
|
||||||
forge-01:
|
forge-01:
|
||||||
|
|
@ -74,6 +76,19 @@ all:
|
||||||
proxmox_vlan: 1294
|
proxmox_vlan: 1294
|
||||||
proxmox_vmid: 129402101
|
proxmox_vmid: 129402101
|
||||||
setops_supernet: 10.29.0.0/16
|
setops_supernet: 10.29.0.0/16
|
||||||
|
ops-01:
|
||||||
|
ansible_host: 10.29.19.41
|
||||||
|
ansible_user: ansible
|
||||||
|
proxmox_cidr: 24
|
||||||
|
proxmox_coeurs: 2
|
||||||
|
proxmox_disque_taille: 20G
|
||||||
|
proxmox_etiquette_vlan: ''
|
||||||
|
proxmox_memoire: 3072
|
||||||
|
proxmox_passerelle: 10.29.19.1
|
||||||
|
proxmox_pont: t29serv
|
||||||
|
proxmox_vlan: 1294
|
||||||
|
proxmox_vmid: 129404101
|
||||||
|
setops_supernet: 10.29.0.0/16
|
||||||
hotes_planifies:
|
hotes_planifies:
|
||||||
hosts: {}
|
hosts: {}
|
||||||
modeles_vm:
|
modeles_vm:
|
||||||
|
|
@ -84,18 +99,23 @@ all:
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
|
ops-01: null
|
||||||
serveur_durci:
|
serveur_durci:
|
||||||
hosts:
|
hosts:
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
|
ops-01: null
|
||||||
serveur_forgejo:
|
serveur_forgejo:
|
||||||
hosts:
|
hosts:
|
||||||
forge-01: null
|
forge-01: null
|
||||||
serveur_nginx:
|
serveur_nginx:
|
||||||
hosts:
|
hosts:
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
|
serveur_ops:
|
||||||
|
hosts:
|
||||||
|
ops-01: null
|
||||||
serveur_powerdns:
|
serveur_powerdns:
|
||||||
hosts:
|
hosts:
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,4 @@ applications:
|
||||||
nginx: { groupe: serveur_nginx, hote: infra-edge-01 }
|
nginx: { groupe: serveur_nginx, hote: infra-edge-01 }
|
||||||
powerdns: { groupe: serveur_powerdns, hote: infra-dns-01 }
|
powerdns: { groupe: serveur_powerdns, hote: infra-dns-01 }
|
||||||
forgejo: { groupe: serveur_forgejo, hote: forge-01, port: 3000, expose: [forge.genese.internal] }
|
forgejo: { groupe: serveur_forgejo, hote: forge-01, port: 3000, expose: [forge.genese.internal] }
|
||||||
|
ops: { groupe: serveur_ops, hote: ops-01 }
|
||||||
|
|
|
||||||
|
|
@ -38,3 +38,7 @@ fonctions:
|
||||||
infra-dns: { categorie: 4, service: 1 }
|
infra-dns: { categorie: 4, service: 1 }
|
||||||
infra-edge: { categorie: 1, service: 1 }
|
infra-edge: { categorie: 1, service: 1 }
|
||||||
infra-pki: { categorie: 4, service: 2 }
|
infra-pki: { categorie: 4, service: 2 }
|
||||||
|
# LE POSTE D'EXPLOITATION. Zone Services-infra : il ne sert personne, mais il est
|
||||||
|
# l'infrastructure de l'infrastructure — la machine par laquelle l'ecosysteme se
|
||||||
|
# reconstruit sans dependre du poste de son mainteneur.
|
||||||
|
ops: { categorie: 4, service: 4 }
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,7 @@ serveurs:
|
||||||
# LA MACHINE QUI PORTE LE GENOME. Son disque n'est pas celui du modele : elle
|
# LA MACHINE QUI PORTE LE GENOME. Son disque n'est pas celui du modele : elle
|
||||||
# hebergera les depots de TOUS les ecosystemes de la lignee, pas seulement les siens.
|
# hebergera les depots de TOUS les ecosystemes de la lignee, pas seulement les siens.
|
||||||
forge-01: { fonction: forge, etat: actif, disque: 80G, integrations: [client_backup] }
|
forge-01: { fonction: forge, etat: actif, disque: 80G, integrations: [client_backup] }
|
||||||
|
# Le poste d'exploitation ne detient AUCUN etat propre : tout ce qu'il porte se
|
||||||
|
# recompose depuis la forge. Il n'a donc pas de `client_backup` — le sauvegarder
|
||||||
|
# serait sauvegarder une copie de ce qui est deja sauvegarde ailleurs.
|
||||||
|
ops-01: { fonction: ops, etat: actif, disque: 20G }
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue