architecture : la sauvegarde sort du cluster, et Dovecot quitte le plan
DEUX DECISIONS DE L'EXPLOITANT, prises en regardant ce que patient 0 doit survivre. 1. LA SAUVEGARDE POINTE HORS CLUSTER (eregion). Le defaut du role poserait un backup-01 sur le MEME cluster : on sauvegarderait le genome a cote du genome, et la perte du cluster emporterait les deux. Patient 0 existe pour survivre a la perte du reste. Une seule cle a surcharger — client_backup_cible — parce que le transport est du SFTP sur SSH, pas une derivation du plan. CE QUI PART EST PETIT, et c'est le raisonnement qui compte : les quatre depots du genome sont des MIROIRS (le poste de l'exploitant, eregion, chaque enfant en portent une copie) — on les repousse depuis n'importe quel survivant. Reste l'irremplacable : les cles de l'AC, et la base de la forge le jour ou elle portera autre chose que des miroirs. DEFAUT ASSUME, ecrit dans le fichier : eregion n'est pas geree par Set-OPS, donc ni prouvee ni reconstructible. C'est un domaine de panne DIFFERENT d'asgard — le point — pas un domaine sur. A revoir quand une troisieme machine existera. 2. DOVECOT RETIRE. Une boite aux lettres sans MTA pour l'alimenter ne servait rien ici. Patient 0 passe de six a cinq machines : moins de surface a defendre sur la machine dont tout descend, et une sauvegarde de moins a surveiller. L'application, la machine et la fonction orpheline partent ensemble — une nomenclature qui place une machine inexistante est un mensonge en attente. Les quatre registres valident, l'inventaire est regenere. RESTE UNE ACTION HUMAINE, sur eregion : creer le compte restic et y poser cle-publique-sauvegarde.txt. La commande exacte est dans 20-sauvegarde.yml. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
fe02d29704
commit
05347e6206
5 changed files with 23 additions and 26 deletions
23
inventories/production/group_vars/all/20-sauvegarde.yml
Normal file
23
inventories/production/group_vars/all/20-sauvegarde.yml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
# LA SAUVEGARDE DE PATIENT 0 SORT DU CLUSTER, ET C'EST TOUT L'INTERET.
|
||||||
|
#
|
||||||
|
# Le defaut du role (`backup-01.<domaine>`) poserait une VM de plus SUR LE MEME CLUSTER :
|
||||||
|
# on sauvegarderait le genome a cote du genome, et la perte du cluster emporterait les
|
||||||
|
# deux. Patient 0 existe precisement pour survivre a la perte du reste.
|
||||||
|
#
|
||||||
|
# CE QUI PART ICI EST PETIT, et c'est voulu. Les quatre depots du genome sont des
|
||||||
|
# MIROIRS : ton poste, eregion et chaque ecosysteme enfant en portent une copie, donc on
|
||||||
|
# les repousse depuis n'importe quel survivant. Ce qui est vraiment irremplacable tient en
|
||||||
|
# deux choses : les cles de l'autorite de certification (les perdre invalide toute la
|
||||||
|
# confiance) et la base de la forge le jour ou elle portera autre chose que des miroirs.
|
||||||
|
#
|
||||||
|
# CE QUE CETTE CIBLE EXIGE, sur eregion, une fois :
|
||||||
|
# sudo adduser --disabled-password --gecos "" restic
|
||||||
|
# sudo -u restic mkdir -p ~restic/.ssh && sudo -u restic chmod 700 ~restic/.ssh
|
||||||
|
# # y coller le contenu de cle-publique-sauvegarde.txt :
|
||||||
|
# sudo -u restic tee -a ~restic/.ssh/authorized_keys < cle-publique-sauvegarde.txt
|
||||||
|
#
|
||||||
|
# ET SON DEFAUT ASSUME : eregion n'est pas geree par Set-OPS. Elle n'est ni prouvee, ni
|
||||||
|
# reconstructible par le moteur. C'est un domaine de panne DIFFERENT d'asgard — ce qui est
|
||||||
|
# le point — mais pas un domaine sur. A revoir le jour ou une troisieme machine existe.
|
||||||
|
client_backup_cible: eregion.chezlepro.ca
|
||||||
|
|
@ -7,7 +7,6 @@ all:
|
||||||
hosts:
|
hosts:
|
||||||
data-sql-01: null
|
data-sql-01: null
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
client_journal:
|
client_journal:
|
||||||
hosts:
|
hosts:
|
||||||
|
|
@ -15,7 +14,6 @@ all:
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
client_metrique:
|
client_metrique:
|
||||||
hosts:
|
hosts:
|
||||||
|
|
@ -23,7 +21,6 @@ all:
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
client_pki:
|
client_pki:
|
||||||
hosts:
|
hosts:
|
||||||
|
|
@ -31,14 +28,12 @@ all:
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
client_unbound:
|
client_unbound:
|
||||||
hosts:
|
hosts:
|
||||||
data-sql-01: null
|
data-sql-01: null
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
hotes_actifs:
|
hotes_actifs:
|
||||||
hosts: {}
|
hosts: {}
|
||||||
|
|
@ -98,19 +93,6 @@ all:
|
||||||
sans_exposition:
|
sans_exposition:
|
||||||
- forge.genese.internal
|
- forge.genese.internal
|
||||||
setops_supernet: 10.29.0.0/16
|
setops_supernet: 10.29.0.0/16
|
||||||
infra-mail-01:
|
|
||||||
ansible_host: 10.29.19.31
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 1
|
|
||||||
proxmox_disque_taille: 20G
|
|
||||||
proxmox_etiquette_vlan: ''
|
|
||||||
proxmox_memoire: 1536
|
|
||||||
proxmox_passerelle: 10.29.19.1
|
|
||||||
proxmox_pont: t29serv
|
|
||||||
proxmox_vlan: 1294
|
|
||||||
proxmox_vmid: 129403101
|
|
||||||
setops_supernet: 10.29.0.0/16
|
|
||||||
infra-pki-01:
|
infra-pki-01:
|
||||||
ansible_host: 10.29.19.21
|
ansible_host: 10.29.19.21
|
||||||
ansible_user: ansible
|
ansible_user: ansible
|
||||||
|
|
@ -132,18 +114,13 @@ all:
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
serveur_dovecot:
|
|
||||||
hosts:
|
|
||||||
infra-mail-01: null
|
|
||||||
serveur_durci:
|
serveur_durci:
|
||||||
hosts:
|
hosts:
|
||||||
data-sql-01: null
|
data-sql-01: null
|
||||||
forge-01: null
|
forge-01: null
|
||||||
infra-dns-01: null
|
infra-dns-01: null
|
||||||
infra-edge-01: null
|
infra-edge-01: null
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
infra-pki-01: null
|
||||||
serveur_forgejo:
|
serveur_forgejo:
|
||||||
hosts:
|
hosts:
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ applications:
|
||||||
step_ca: { groupe: serveur_step_ca, hote: infra-pki-01 }
|
step_ca: { groupe: serveur_step_ca, hote: infra-pki-01 }
|
||||||
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 }
|
||||||
dovecot: { groupe: serveur_dovecot, hote: infra-mail-01 }
|
|
||||||
postgresql: { groupe: serveur_postgresql, hote: data-sql-01 }
|
postgresql: { groupe: serveur_postgresql, hote: data-sql-01 }
|
||||||
redis: { groupe: serveur_redis, hote: data-sql-01 }
|
redis: { groupe: serveur_redis, hote: data-sql-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] }
|
||||||
|
|
|
||||||
|
|
@ -39,5 +39,4 @@ fonctions:
|
||||||
forge: { categorie: 6, service: 1 }
|
forge: { categorie: 6, service: 1 }
|
||||||
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-mail: { categorie: 4, service: 3 }
|
|
||||||
infra-pki: { categorie: 4, service: 2 }
|
infra-pki: { categorie: 4, service: 2 }
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
serveurs:
|
serveurs:
|
||||||
infra-pki-01: { fonction: infra-pki, etat: planifie, disque: 32G, integrations: [client_backup] }
|
infra-pki-01: { fonction: infra-pki, etat: planifie, disque: 32G, integrations: [client_backup] }
|
||||||
infra-edge-01: { fonction: infra-edge, etat: planifie }
|
infra-edge-01: { fonction: infra-edge, etat: planifie }
|
||||||
infra-mail-01: { fonction: infra-mail, etat: planifie, integrations: [client_backup] }
|
|
||||||
infra-dns-01: { fonction: infra-dns, etat: planifie, disque: 40G }
|
infra-dns-01: { fonction: infra-dns, etat: planifie, disque: 40G }
|
||||||
data-sql-01: { fonction: data-sql, etat: planifie, integrations: [client_backup] }
|
data-sql-01: { fonction: data-sql, etat: planifie, integrations: [client_backup] }
|
||||||
# PAS DE `client_smtp` ICI, ni ailleurs dans ce plan : patient 0 n'a pas de MTA, et la
|
# PAS DE `client_smtp` ICI, ni ailleurs dans ce plan : patient 0 n'a pas de MTA, et la
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue