Pourquoi choisir Nixos pour une infra as code ?
Lorsque l'on pense Infra As Code, on pense Ansible, Puppet, Salt etc… mais aussi, terraform, Opentoxffu. On pense aussi à du kube, à des systèmes immuables et à des distributions classiques.
Ici nous allons parler d'une Infra As Code qui utilise Nix, Nixos, Flake et quelques autre programmes de la galaxie Nixos.
Les avantages
Les bénéfices en synthèse :
- Immuable;
- Reproductible;
- Modulaire;
- Adaptée au travail d'équipe;
- Versionnable;
- Des containers légers (pas docker, pas lxc);
Dans le détail ça donne : Quand on utilise Nixos, on produit une distribution immuable. Tout le système est en lecture seule. Il faut reconstruire le système pour le modifier. Quand on utilise Flake et le fichier flake.lock on a aussi la reproductivité complète (à la version exacte), ou de la reproductivité à la version courante, si on utilise pas flake.lock.
Le code est versionnable. On peut même faire de la CI/CD. Le code est modulaire, donc ré-employable.
C'est tout ?
Nixos a intégré systemd-nspawn dans *Nixos Containers, qui permet de faire des container (même store que l'hôte) avec tous les avantages Nixos. En gros c'est un chroot amélioré. Nixos a intégré la création d'images à destination des principaux cloud public, mais également de vmware, de Proxmox et de Proxmox-LXC.
Comment orchestrer ?
En 2024, et plus précisément depuis la version 24.05, l'utilitaire nixos-rebuild a été ré-écrit de bash en Python et intègre une fonctionalité de déploiement.
Il s'agit de l'option `–target-host`.
Donc de base, nixos-rebuild vous permet de contruire des VM, des systèmes, des systèmes autres, de tester les modifications, de construire un système distant depuis votre poste ou d'un système autre (avec plus de cpu/ram pour construire plus), et de déployer des systèmes immuables distant. Un véritable couteau suisse.
C'est fini ?
Non. Nixos et sa galaxie c'est aussi :
- Colmena : un utilitaire pour faire de la construction et du déploiement de masse (plusieurs milliers de machines);
- nixos-generate : pour fabriquer vos images de base à destination de Proxmox, Proxmox-lxc, lxc, doker, kube, amazon etc…
- Terranix : un terraform Ă la sauce Nixos
Vous avez compris je pense, à partir de cette distribution, vous avez de quoi faire de l'immuable, de l'IAC pour quelques vm/containers ou du passage à l'échelle. Adieu Puppet/Foreman, adieux Ansible/Tower, adieu Fedora Silverblue.
Vous avez des serveurs physiques et vous voulez un cloud privé : utilisez Terranix pour gérer Proxmox, Colmena pour orchestrer les déploiement massifs, nixos-generate pour la création des images, flakes pour la configuration.
Vous avez une dizaine de containers/VM : utilisez nixos-rebuild pour construire et déployer, flake pour les configurations.
Et toujours git et vous pouvez utiliser Forgejo (mais pas que) pour mettre en place du CI/CD et automatiser au maximum.
Les bases de votre IAC sont posées. La prochaine fois, on va aborder la mise en pratique.