En relisant mon ancien article sur [agenix](“Gérer ses secrets quand on utilise git et qu’on partage son code (et Nixos)”), j’ai remarqué une chose :
rien n’est vraiment claire.
Il était donc temps de refaire un article, avec un exemple concret.
Pourquoi utiliser Agenix sur NixOS ?
Quand on commence à automatiser son infrastructure avec NixOS, une question revient rapidement :
Comment gérer les secrets sans laisser traîner des mots de passe en clair dans le dépôt Git ?
C’est précisément le problème que résout Agenix.
Agenix permet de :
chiffrer des secrets avec Age
utiliser des clés SSH existantes
stocker les fichiers chiffrés dans Git
déployer automatiquement les secrets sur NixOS
Dans cet article, nous allons configurer Agenix via nix-channel puis
l’utiliser pour gérer le mot de passe administrateur de Grafana.
Installation d’Agenix avec nix-channel
Ajout du channel :
|
|
Installation :
|
|
Vérification :
|
|
Génération d’une clé SSH dédiée
Agenix repose sur des clés SSH pour chiffrer et déchiffrer les secrets.
Création de la clé :
|
|
Les fichiers générés :
|
|
Vous pouvez utiliser une clé déjà existante, mais perso je préfère une clé spécifique.
Activation d’Agenix dans NixOS
Dans /etc/nixos/configuration.nix :
|
|
Organisation des secrets
Une bonne pratique consiste à centraliser les secrets dans un répertoire dédié.
Exemple :
|
|
Cette structure reste simple, lisible et facile à maintenir.
Création du fichier secrets.nix
Récupération de la clé publique :
|
|
Exemple :
|
|
Création du fichier secrets.nix :
|
|
Ce fichier indique simplement quelles clés publiques sont autorisées à déchiffrer le secret.
Création du secret Grafana
Positionnement dans le répertoire des secrets :
|
|
Création du fichier chiffré :
|
|
L’éditeur s’ouvre automatiquement.
Exemple de contenu :
|
|
Une fois sauvegardé, le fichier chiffré est créé :
|
|
Déclaration du secret dans configuration.nix
Ajout du secret :
|
|
Ici, le chemin peut parfaitement pointer vers un sous-répertoire.
Le déplacement physique du fichier .age n’impacte pas le contenu du
secrets.nix.
Important : comprendre secrets.nix
Le rôle de secrets.nix est souvent mal compris.
Ce fichier ne sert PAS à indiquer où se trouve le secret sur le disque.
Il sert uniquement à :
définir le nom logique du secret
associer les clés publiques autorisées
Par exemple :
|
|
Le chemin réel du fichier est ensuite défini dans :
|
|
Cela permet d’organiser librement ses secrets :
|
|
Configuration de Grafana
Configuration complète :
|
|
Au démarrage :
Agenix déchiffre automatiquement le secret
le fichier apparaît dans /run/agenix
Grafana lit directement le contenu
- Application de la configuration
Reconstruction du système :
|
|
Vérification :
|
|
Affichage du secret :
|
|
Connexion Grafana :
|
|
Utilisateur :
|
|
Mot de passe :
|
|
Modifier un secret plus tard
Pour modifier le mot de passe :
|
|
Puis :
|
|
Conclusion
Agenix apporte une solution élégante et très naturelle à la gestion des secrets sur NixOS.
L’utilisation des clés SSH simplifie énormément le workflow par rapport à des solutions basées sur GPG.
Avec une bonne organisation des fichiers :
les secrets restent versionnables
Git peut être utilisé sans risque
les services comme Grafana récupèrent automatiquement leurs mots de passe
Une approche propre, moderne et parfaitement adaptée à l’écosystème NixOS.