Découverte d’Augeas : Gestion des Configurations Systèmes
J’ai découvert Augeas un peu par hasard, en plongeant dans la documentation de
libguestfs pour mon projet. Je rappelle que mon objectif est de créer un outil
capable de valider la compatibilité d’une image de VM pour différents
fournisseurs de cloud. Grâce à libguestfs, je peux accéder au contenu des
disques virtuels de ces images sans les démarrer, ce qui est extrêmement
pratique pour analyser et ajuster des configurations.
En creusant dans les fonctionnalités de libguestfs, je suis tombé sur
Augeas, un outil intégré qui permet de lire et modifier facilement les
fichiers de configuration des systèmes. Plutôt que de manipuler les
configurations en texte brut, Augeas propose une structure d’arborescence,
rendant chaque paramètre accessible et modifiable de manière beaucoup plus sûre
et intuitive.
Et je ne vais pas le cacher, j’adore !
Fonctionnement d’Augeas
Augeas est un outil puissant qui simplifie la manipulation des
configurations. Son fonctionnement est basé sur une architecture qui transforme
les fichiers de configuration en arbres de données, facilitant leur exploration
et modification.
Au cœur d’Augeas, on trouve les lenses, qui sont des règles permettant
de traduire les fichiers de configuration en arbres structurés. Ce sont un peu
comme des filtres qui décodent chaque fichier texte pour le rendre manipulable
dans un format standard. Il existe déjà de nombreux lenses pour les
configurations courantes, mais Augeas permet également de créer des
lenses personnalisées pour des fichiers moins conventionnels.
La bibliothèque libaugeas est le moteur principal d’Augeas. Elle est
responsable de lire et interpréter les fichiers de configuration en appliquant
les lenses appropriées. Elle crée ensuite une arborescence de données que
l’utilisateur peut manipuler. Libaugeas ne se limite pas à la lecture ; elle
peut également modifier les valeurs de l’arbre et sauvegarder ces modifications
directement dans les fichiers de configuration, sans perturber les commentaires
ou le format du fichier.
L’arborescence de nœuds créée par libaugeas facilite énormément la
navigation et la modification des valeurs. Chaque paramètre est identifiable par
un chemin spécifique, un peu comme un chemin de fichier dans un système UNIX.
Cela signifie que vous interagissez avec des arbres structurés, ce qui permet
des modifications ciblées et précises.
Un exemple pratique
Pour bien comprendre le fonctionnement d’Augeas, prenons un exemple concret de
lecture d’un paramètre spécifique dans le fichier de configuration GRUB, en
l’occurrence GRUB_CMDLINE_LINUX_DEFAULT. Ce paramètre, souvent situé dans
/etc/default/grub, contient les options passées par défaut au noyau Linux au
démarrage. C’est un point d’entrée utile pour vérifier ou ajuster certaines
configurations de démarrage, comme l’activation d’options spécifiques au noyau.
Lorsque le fichier /etc/default/grub est chargé par Augeas, il est
converti en un arbre de données grâce à une lens dédiée. Plutôt que de lire
le fichier ligne par ligne comme dans un éditeur texte classique, Augeas
utilise cette lens pour identifier chaque paramètre et créer une structure en
arbre, où chaque option est un nœud distinct.
Ainsi, le paramètre GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" sera traduit en
un nœud facilement accessible, sous la forme d’un chemin unique dans l’arbre
Augeas, tel que :
Grâce à cette arborescence, il devient possible de naviguer directement vers
le paramètre souhaité. Dans notre exemple, le nœud
GRUB_CMDLINE_LINUX_DEFAULT contient la valeur actuelle définie dans le fichier
de configuration, en l’occurrence "quiet splash". Il est possible de lire
cette valeur simplement en accédant au nœud correspondant, sans avoir à
parcourir le fichier manuellement.
Cette méthode d’accès direct permet d’éviter les erreurs de lecture ou
d’interprétation, car Augeas s’assure que la valeur associée est exactement
celle spécifiée dans le fichier de configuration.
Il est possible de modifier la valeur directement en assignant un nouveau
contenu au nœud. Par exemple, si l’on souhaite ajouter une option au noyau,
comme nomodeset, on pourrait simplement assigner la nouvelle valeur "quiet splash nomodeset" à ce nœud. Augeas gère alors la modification du fichier
de configuration pour que la valeur soit mise à jour en toute sécurité.
Lors de cette modification, Augeas préserve le format original du fichier
/etc/default/grub, y compris les commentaires et l’ordre des paramètres. Cela
permet de s’assurer que les modifications sont appliquées sans perturber les
autres lignes du fichier ni les commentaires ajoutés par les administrateurs ou
générés par le système.
En résumé, avec Augeas, la lecture et la manipulation du paramètre
GRUB_CMDLINE_LINUX_DEFAULT dans /etc/default/grub se font de manière sûre
et structurée. Grâce à l’arborescence de données et aux lenses, chaque
paramètre devient un nœud distinct et directement accessible, permettant des
ajustements précis tout en préservant l’intégrité du fichier de configuration.
Installation d’Augeas
Augeas est disponible dans les dépôts de la plupart des distributions Linux.
Les commandes ci-dessous vous guideront pour l’installer selon votre
environnement :
Sur Debian/Ubuntu Utilisez apt, le gestionnaire de paquets, pour
installer Augeas :
Sur CentOS/RHEL Utilisez yum ou dnf, selon votre version de CentOS ou
Red Hat, pour installer les packages d’Augeas :
ou pour les versions récentes :
Ce package comprend les outils de base pour manipuler les configurations,
ainsi que la bibliothèque libaugeas.
Sur Fedora Fedora, ayant des paquets souvent plus récents, utilise dnf
pour l’installation :
Ici aussi, augeas installe les outils principaux tandis que augeas-libs
installe les bibliothèques nécessaires.
Sur Arch Linux
Pour les utilisateurs d’Arch Linux, pacman permet une installation rapide :
Vérification de l’installation
Après l’installation, vérifiez qu’Augeas est bien installé et fonctionnel.
Vous pouvez utiliser la commande suivante pour obtenir la version installée
d’Augeas :
La commande augtool est l’outil de ligne de commande principal d’Augeas.
Si cette commande ne fonctionne pas, il se peut qu’il y ait eu un problème
durant l’installation ou que le chemin d’accès à Augeas ne soit pas
correctement configuré.
Gestion des Configurations avec Augeas
Augeas facilite la lecture et la modification des fichiers de configuration
sous Linux grâce à une interface structurée. Voici comment utiliser les
commandes de base pour gérer vos configurations efficacement.
Lancer Augeas
Pour commencer, ouvrez l’outil augtool en mode superutilisateur pour avoir
les droits nécessaires :
Une fois dans augtool, vous pouvez accéder aux commandes de gestion de
configuration.
Lister les lens disponibles
Il suffit de taper la commande suivante :
Obtenir des explications sur les Lens
Pour obtenir des explications sur les lenses disponibles, utilisez la commande
suivante :
Quelques explications :
lens = @Sshd Cette ligne indique que la lens utilisée pour interpréter
ces fichiers est Sshd. Chaque lens dans Augeas est conçue pour un type
spécifique de fichier de configuration. Ici, @Sshd signifie que cette lens
est destinée à manipuler les fichiers de configuration de SSH (le démon SSH).
incl[1] = /etc/ssh/sshd_config.d/*.conf Cette ligne montre que la lens
Sshd inclut également tous les fichiers avec l’extension .conf présents
dans le répertoire /etc/ssh/sshd_config.d/. Ce répertoire est souvent
utilisé pour des configurations SSH supplémentaires ou des configurations
personnalisées. En incluant ces fichiers, Augeas permet de lire et de
modifier les paramètres contenus dans chacun de ces fichiers, pas seulement
dans le fichier principal.
incl[2] = /etc/ssh/sshd_config Ici, la lens inclut le fichier principal de
configuration SSH, /etc/ssh/sshd_config. Ce fichier contient les paramètres
de configuration du serveur SSH (comme PermitRootLogin, AllowUsers, etc.)
et est généralement le fichier de configuration principal pour SSH.
Grâce à cette approche, Augeas peut gérer plusieurs fichiers de
configuration SSH en même temps, offrant une vue unifiée et cohérente de la
configuration SSH, même si elle est répartie dans plusieurs fichiers.
Obtenir la liste des Noeuds
La commande ls permet de lister les nœuds d’un chemin dans l’arborescence de
configuration.
Exemple : Pour lister le contenu de /etc/default/grub :
Lire un Noeud
Pour lire un paramètre spécifique, utilisez la commande get suivie du chemin
du nœud.
Exemple : Lire la valeur de GRUB_CMDLINE_LINUX_DEFAULT :
Ici on voit que la valeur retrounée est vide.
Modifier un Noeud
Avec la commande set, vous pouvez changer la valeur d’un paramètre.
Exemple : Modifier GRUB_CMDLINE_LINUX_DEFAULT pour ajouter une option :
Ajouter un Nouveau Noeud
Si un paramètre n’existe pas, vous pouvez le créer avec set en précisant le
chemin et la valeur.
Exemple : Ajouter AllowUsers dans sshd_config :
Supprimer un nœud
Vous pouvez supprimer un nœud avec la commande rm.
Exemple : Supprimer la directive AllowUsers dans sshd_config :
Renommer ou déplacer un nœud
Vous pouvez renommer ou déplacer un nœud avec la commande mv.
Exemple : Déplacer sshd_config vers /etc/ssh/sshd_config :
Rechercher des nœuds
Vous pouvez rechercher des nœuds avec la commande match.
Exemple : Rechercher tous les nœuds qui contiennent sshd_config :
En utilisant des expressions régulières, vous pouvez rechercher des nœuds qui
correspondent à un modèle particulier.
Exemple : Rechercher tous les nœuds commentés et contenant PermitRootLogin
:
Vider la valeur d’un nœud
Pour vider la valeur d’un nœud, utilisez la commande clear.
Exemple : Vider la valeur du nœud /files/etc/ssh/sshd_config/Port :
Afficher une arborescence complète
Pour afficher une arborescence complète, utilisez la commande print.
Exemples :
Sauvegarder les Modifications
Pour enregistrer les changements dans le fichier de configuration d’origine,
utilisez simplement la commande :
Quitter Augeas
Pour sortir de augtool, utilisez la commande :
Où Trouver des Lenses ?
Avant de créer une lens, vérifiez si une lens similaire existe déjà. Voici où
chercher :
Répertoire par défaut : Consultez /usr/share/augeas/lenses pour voir les
lenses fournies avec Augeas. Ces lenses couvrent de nombreux fichiers de
configuration courants.
Dépôt officiel Augeas sur GitHub : Le projet Augeas est open source,
et son dépôt officiel contient de nombreuses lenses contribuant aux versions
actuelles d’Augeas. GitHub Augeas ↗
GitHub et GitLab : Recherchez des lenses personnalisées publiées par
d’autres utilisateurs. Essayez des mots-clés comme “Augeas lens” suivis du nom
de l’application ou du fichier de configuration que vous ciblez.
Conclusion
Vous l’aurez compris, Augeas est un super Outil, il existe même une
Collection Ansible, malheureusement pas officielle.
Resssources
Pour approfondir vos connaissances et découvrir d’autres possibilités avec
Augeas, voici quelques ressources utiles :
Wiki officiel Augeas ↗ : Une
mine d’informations sur les fonctionnalités d’Augeas, la création de
lenses, les cas d’utilisation, et des astuces pour la manipulation de
configurations systèmes.
Dépôt GitHub Augeas ↗ : Retrouvez
les dernières mises à jour et contribuez à l’outil open source.