Aller au contenu

Déploiement et mises à jour

Le parc se déploie avec colmena 🡕 : une commande construit et applique la configuration sur un ou plusieurs hôtes, à distance, depuis le poste admin.

Fenêtre de terminal
just apply <cible> [action] # alias : a
  • cible = nom d’hôte, motif ('*'), liste (a,b) ou tag colmena (@server).
  • action = switch (défaut), boot, test ou build.
CommandePour quoi
just apply <cible>Construire + activer sur la (les) cible(s)
just apply-localAppliquer sur la machine courante (alias al)
just apply-verbose <cible>Idem apply en mode trace (alias av)

Monter en confiance par l’action : chaque étape est moins risquée que la suivante.

Fenêtre de terminal
just apply <hôte> build # télécharge + compile : 100 % sûr, rien n'est activé
just apply <hôte> test # active sans switcher : ni génération, ni boot
just apply <hôte> # switch : active et crée une nouvelle génération

Progresser du cœur vers la périphérie : déployez les nœuds dans cet ordre, pour ne jamais vous couper l’accès à un nœud par celui qui le précède.

Diagram

Le système est figé par les flakes. Mettre à jour = rafraîchir les entrées, puis redéployer.

Fenêtre de terminal
just update-flake # met à jour dnf/ + racine, commit les locks
just apply '*' # déploie la mise à jour

Deux services se combinent pour éviter de recompiler ou de retélécharger les dérivations à chaque déploiement.

ServiceRôle
harmoniaSert le /nix/store local, signé, directement aux hôtes (LAN, ou VPN s’il est global).
nix-cacheProxy nginx par zone qui met en cache le cache public cache.nixos.org sur la passerelle.

Un hôte interroge ces sources dans l’ordre de priorité suivant. La première récupération depuis Internet est ainsi mutualisée pour toute la zone.

PrioritéSourcePortée
20harmonia de la zoneLAN, ce que la zone a compilé
35proxy nix-cache de la zoneLAN, miroir mutualisé du cache public
40cache.nixos.org en directfilet de sécurité si la passerelle est HS
45harmonia globaldernier recours, par le VPN

Récupérer un paquet et le construire sont deux besoins distincts. Le cache binaire ci-dessus couvre le premier. Pour le second, un hôte puissant du réseau peut prendre à sa charge les compilations longues d’un hôte d’administration.

Déclarez-le par la fonctionnalité build-farm :

etc/config.yaml
features: ["build-farm"]

Chaque hôte d’administration l’ajoute alors à ses nix.buildMachines, joint en SSH par le compte de déploiement nix. Rien d’autre à configurer : la clé et l’autorisation sont déjà en place sur tout le parc.