Retirer dnsmasq, une fois tous les hyperviseurs passés au serveur DHCP intégré #49
Labels
No labels
bug fix
feature implementation
new feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
syonad/two#49
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
#46 a livré le serveur DHCP intégré en coexistence avec dnsmasq : la clé
dhcp.backendchoisitlequel sert les subnets créés par l'agent, et le défaut est resté
dnsmasqpour qu'unagent.ymlde 0.1.0 se comporte à l'identique. C'était le chemin de migration, pas la cible.Ce ticket retire dnsmasq une fois la migration terminée.
Préalable — ne pas démarrer avant
dhcp.backend: two, et aucun ne peut avoir besoinde revenir en arrière. C'est la condition bloquante : le retour arrière est aujourd'hui la
porte de sortie en cas de problème, et ce ticket la supprime.
todo.md— systemd-networkd, la validation labrestante de #46).
Ce qui part
Fichiers entiers
scripts/run-dnsmasq-in-netns.shsystemd/dnsmasq@.serviceinternal/dhcpbackend/dnsmasq.goetdnsmasq_test.goDans
internal/dhcp— le paquet ne disparaît pasÀ retirer :
GenerateConfig,WriteReservations,WriteVMOptions,RemoveVMOptions,RemoveReservations,RemoveSubnetDirs,RemoveConfig,HostsDir,OptsDir,UnitName,classlessRoutes, le typeReservation, le typeConfiget la constanteDefaultConfDir.HostsDiretOptsDirn'ont déjà plus aucun appelant.À conserver, ce sont les seules choses du paquet qui ne concernent pas dnsmasq :
Entriesinternal/subnet/create.goStoreDHCPEntriesinternal/subnet/create.goGetMACForIPinternal/vm/data.go,internal/watchdog/check_dhcp.goLe plan d'adressage
subnet/<n>/dhcp/<ip> → macreste la source d'autorité, indépendamment duserveur qui distribue les adresses. Renommer le paquet mérite d'être posé :
internal/dhcpnecontiendra plus que le plan d'adressage, alors que le serveur vit dans
internal/dhcpd.Configuration
dhcp.backend, son défaut dansinternal/config/agent/struct.gointernal/config/agent/dhcp.goen entier :BackendDnsmasq,BackendTwo,ValidBackenddhcp:deconf/agent/config.exemple.ymlAbstractions devenues inutiles
dhcpbackend.Backendetdhcpbackend.New: avec une seule implémentation elles neservent plus.
internal/subnetetinternal/vmpeuvent appelerTwodirectement — à moins degarder l'interface pour les tests, ce qui est à trancher plutôt qu'à supposer.
configFileReporterdansinternal/watchdog/check_dhcp.go, aveccheckDHCPConfigFileetDnsmasq.ConfigPath: plus aucun backend n'a de fichier de configuration.Reservation.Tagdeinternal/dhcpet le helpertag()dednsmasq.go: le mécanismede tags était propre à dnsmasq,
Reservation.DefaultRoutel'a remplacé. Vérifier siReservation.Indexgarde un usage — il ne servait qu'à construire le tag.Déploiement
scripts/deploy.sh:dnsmasq@.serviceetrun-dnsmasq-in-netns.shdes listes du profilkvm.forgejo/workflows/release-pipeline.yml: les deux assets dnsmasqscripts/bootstrap_kvm.sh: le paquetdnsmasqdeKVM_PACKAGES, et lesystemctl disable --now/maskdednsmasq.servicequi n'a plus de raison d'êtreDocumentation
docs/exploitation/services.rst: la section dnsmasq et sa ligne du tableau des unitsdocs/exploitation/diagnostic.rst: le bloc « backend dnsmasq », et retirer la distinction desdeux backends qui n'a plus lieu d'être
docs/exploitation/configuration.rst: la section « Backend DHCP » et la procédure de basculedocs/demarrage/installation.rst:dnsmasqdes paquets et la note sur le retour arrièredocs/exploitation/observabilite.rst,docs/concepts/vpc-subnet-vm.rst,docs/architecture/vue-densemble.rst,README.md: mentions ponctuellesAnalyse de risque
Ce ticket supprime le retour arrière. C'est son seul risque réel, et il n'est pas technique :
une fois dnsmasq retiré du dépôt, du déploiement et de
bootstrap_kvm.sh, un hyperviseur endifficulté avec le serveur intégré n'a plus de repli. D'où la condition bloquante en tête.
Le paquet Debian retiré de
bootstrap_kvm.shne l'est pas des hosts déjà provisionnés — laracine est en tmpfs et le bootstrap est rejoué à chaque démarrage, donc il disparaîtra au prochain
redémarrage. Un host non redémarré gardera dnsmasq installé mais masqué, sans effet.
Aucune donnée n'est concernée : le plan d'adressage reste en base, les fichiers
/etc/dnsmasq.dd'un ancien subnet sont déjà supprimés par
TeardownSubnet. Prévoir malgré tout de vérifier que/etc/dnsmasq.dest vide sur chaque host avant de conclure.Surface d'attaque : inchangée à la baisse. Le serveur intégré est déjà le seul en écoute sur
UDP/67 après la bascule ; ce ticket retire du code mort, il n'ouvre rien.
Vérification attendue
grep -ri dnsmasqne rend plus rien hors historique et notes de versiongo build ./...,go vet ./...,go test ./...propressphinx-build -Wd'un reliquat