artefacts : la forge sert aussi les binaires

serveur_artefacts colocalise sur forge-01. Toute la flotte prend ses paquets
Debian dans l'ecosysteme. Eprouve en coupant l'amont.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-08-23 14:42:26 -04:00
parent aeb0e1635a
commit 163383185c
3 changed files with 26 additions and 7 deletions

View file

@ -48,7 +48,7 @@ Les cinq machines tournent. L'adressage dérive du seul seed `index: 29` — sup
| `infra-dns-01` | infra-dns | `10.29.19.11` | PowerDNS autoritatif | | `infra-dns-01` | infra-dns | `10.29.19.11` | PowerDNS autoritatif |
| `infra-pki-01` | infra-pki | `10.29.19.21` | step-ca — l'autorité interne | | `infra-pki-01` | infra-pki | `10.29.19.21` | step-ca — l'autorité interne |
| `ops-01` | ops | `10.29.19.41` | le **poste d'exploitation** | | `ops-01` | ops | `10.29.19.41` | le **poste d'exploitation** |
| `forge-01` | forge | `10.29.21.11` | Forgejo — le génome | | `forge-01` | forge | `10.29.21.11` | Forgejo — le génome, **et** le cache d'artefacts |
**Forgejo tourne sur SQLite**, pas sur une VM PostgreSQL dédiée : une base qu'une **Forgejo tourne sur SQLite**, pas sur une VM PostgreSQL dédiée : une base qu'une
poignée de personnes sollicite ne justifie pas un serveur, une zone, un secret et une poignée de personnes sollicite ne justifie pas un serveur, une zone, un secret et une
@ -64,6 +64,11 @@ d'irremplaçable (les clés de l'AC, les dépôts).
**Il est hébergé par la fabric de Chezlepro** (`SITE-Chezlepro`), au même titre qu'un **Il est hébergé par la fabric de Chezlepro** (`SITE-Chezlepro`), au même titre qu'un
autre tenant. Il n'a pas d'underlay à lui. autre tenant. Il n'a pas d'underlay à lui.
**Il sert ses propres binaires.** `forge-01` porte aussi la source d'artefacts
(apt-cacher-ng) : toute la flotte y prend ses paquets Debian au lieu d'aller chez Debian.
La forge est la source, du code **et** des binaires. Éprouvé en coupant l'amont — un
paquet en cache est servi en `0 o/s`, un paquet absent est refusé par un `503`.
**Il résout par lui-même.** Les quatre hôtes clients interrogent un Unbound local, qui **Il résout par lui-même.** Les quatre hôtes clients interrogent un Unbound local, qui
tient la zone `genese.internal` de `infra-dns-01` et **récurse depuis les serveurs tient la zone `genese.internal` de `infra-dns-01` et **récurse depuis les serveurs
racine** pour le reste — `forward-addr` = 0, aucun résolveur tiers n'est consulté. racine** pour le reste — `forward-addr` = 0, aucun résolveur tiers n'est consulté.
@ -154,7 +159,6 @@ ses VLAN n'auraient existé nulle part.
déménagement tient en **trois** valeurs de `group_vars/proxmox.yml` — nœud, stockage, déménagement tient en **trois** valeurs de `group_vars/proxmox.yml` — nœud, stockage,
gabarit. Le pont n'en fait pas partie : chaque VM atterrit sur le VNet dérivé de sa gabarit. Le pont n'en fait pas partie : chaque VM atterrit sur le VNet dérivé de sa
zone. zone.
- [ ] **Une source d'artefacts.** Sa forge héberge du code, pas des binaires. Les - [ ] **Les dépôts tiers en HTTPS** (Smallstep, Grafana, Icinga) vont encore en direct :
collections Ansible sont réglées (cache du contrôleur, poussé par SSH) ; Forgejo, les faire passer par le cache demande de réécrire leurs sources en
step-ca et les autres viennent encore du dehors. Un enfant coupé de l'internet ne `http://cache/<remap>/…`. Les dépôts Debian, eux, sont couverts.
se construit pas.

View file

@ -3,6 +3,13 @@
# Source : instance/plan/serveurs.yml + instance/plan/applications.yml + instance/plan/nomenclature.yml. # Source : instance/plan/serveurs.yml + instance/plan/applications.yml + instance/plan/nomenclature.yml.
all: all:
children: children:
client_artefacts:
hosts:
forge-01: null
infra-dns-01: null
infra-edge-01: null
infra-pki-01: null
ops-01: null
client_backup: client_backup:
hosts: hosts:
forge-01: null forge-01: null
@ -26,10 +33,10 @@ all:
ansible_host: 10.29.21.11 ansible_host: 10.29.21.11
ansible_user: ansible ansible_user: ansible
proxmox_cidr: 24 proxmox_cidr: 24
proxmox_coeurs: 1 proxmox_coeurs: 2
proxmox_disque_taille: 80G proxmox_disque_taille: 80G
proxmox_etiquette_vlan: '' proxmox_etiquette_vlan: ''
proxmox_memoire: 2048 proxmox_memoire: 2560
proxmox_passerelle: 10.29.21.1 proxmox_passerelle: 10.29.21.1
proxmox_pont: t29appl proxmox_pont: t29appl
proxmox_vlan: 1296 proxmox_vlan: 1296
@ -93,6 +100,9 @@ all:
hosts: {} hosts: {}
modeles_vm: modeles_vm:
hosts: {} hosts: {}
serveur_artefacts:
hosts:
forge-01: null
serveur_debian: serveur_debian:
hosts: hosts:
forge-01: null forge-01: null

View file

@ -5,3 +5,8 @@ applications:
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 } ops: { groupe: serveur_ops, hote: ops-01 }
# LA FORGE EST LA SOURCE — du code ET des binaires. Colocalise sur forge-01 plutot
# que sur une VM a elle : c'est la meme fonction (servir a ses enfants ce dont ils
# ont besoin pour exister), et patient 0 est deliberement le plus petit ecosysteme
# complet. Un autre ecosysteme peut le placer ou il veut.
artefacts: { groupe: serveur_artefacts, hote: forge-01 }