Comment gérer / etc avec le contrôle de version avec Etckeeper sur CentOS 7

introduction

Dans l’écosystème Linux, l’installation, la maintenance et la mise à niveau logicielle du logiciel sont indispensables. Cependant, le suivi des modifications apportées aux fichiers de configuration locaux est toujours nécessaire. Contrairement à l’ancien mode de copie des fichiers de configuration avant d’effectuer des modifications, etckeeper vous permet de suivre les modifications à l’aide d’un référentiel Git, Mercurial, Bazaar ou Darcs, comme vous le feriez avec un projet de développement logiciel.

De plus, etckeeper s’intègre parfaitement à yum pour valider automatiquement les modifications apportées au contenu du répertoire + / etc + lors de la mise à niveau des packages. Cela vous permettra de revenir aux versions précédentes de vos fichiers de configuration si vous le souhaitez.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

etckeeper ne fait que suivre les autorisations de fichier, les métadonnées et les modifications. Il ne fournit pas d’outils prêts à l’emploi pour effectuer la restauration de fichiers. Il est donc nécessaire de comprendre les principes fondamentaux d’un système de contrôle des révisions.

Dans cet article, nous utiliserons Git, qui est le VCS par défaut utilisé par etckeeper. Si vous souhaitez actualiser votre mémoire sur Git et le contrôle de version, vous pouvez consulter la cette série de tutoriels. Bien que vous n’utilisiez pas directement Git dans ce guide, vous pouvez exécuter des commandes spécifiques à Git via etckeeper.

Étape 1 - Installer etckeeper

Dans cette étape, nous allons installer etckeeper.

Tout d’abord, vous devez activer EPEL (Extra Packages for Enterprise Linux) sur votre serveur CentOS 7, car c’est le référentiel qui contient etckeeper.

sudo yum update && sudo yum install epel-release

Ensuite, installez etckeeper.

sudo yum update && sudo yum install etckeeper

Git est livré avec CentOS 7 par défaut, nous n’avons donc pas besoin de l’installer.

Étape 2 - Personnalisation de la configuration de etckeeper

Une fois que vous avez installé etckeeper, vous devez mettre à jour le fichier de configuration + / etc / etckeeper / etckeeper.conf +.

Commencez par ouvrir le fichier de configuration avec Nano ou votre éditeur de texte préféré.

sudo nano /etc/etckeeper/etckeeper.conf

Vous trouverez ci-dessous les variables essentielles à configurer pour qu’etckeeper fonctionne correctement. N’hésitez pas à laisser le reste des paramètres commentés.

Premièrement, sous le commentaire + # Le VCS à utiliser. +, Assurez-vous que le + VCS =" git "+ est décommenté (c’est-à-dire il n’y a pas de + # + au début de la ligne). Par défaut, cette option sera déjà annulée, car git est le VCS par défaut utilisé par les installations etckeeper sur CentOS 7.

Si vous souhaitez empêcher etckeeper de valider automatiquement les modifications une fois par jour, assurez-vous que + AVOID_DAILY_AUTOCOMMITS = 1 + ne soit pas commenté. Pour décider si vous souhaitez définir cette option, vous devez déterminer si les fichiers de configuration de votre système font l’objet de modifications fréquentes (par exemple, les environnements de test changent souvent tous les jours). Si oui, vous devriez commenter cette ligne; sinon, vous pouvez le laisser commenté.

Si vous voulez que votre installation soit abandonnée quand il y a des modifications non validées dans + / etc +, veillez à ne pas commenter + AVOID_COMMIT_BEFORE_INSTALL = 1 +. Cela nécessitera un commit manuel avant d’utiliser yum pour installer des paquets. Sinon, laissez-le commenté et yum validera automatiquement les fichiers mis à jour avant d’exécuter une installation. Ce choix est entièrement à vous; cela dépend en grande partie de votre environnement et de la quantité de changements. Cela ressemble beaucoup à l’exemple précédent, sauf que cette fois, cela dépendra de la fréquence d’installation des packages.

Une fois les options mises à jour, enregistrez et fermez le fichier.

Étape 3 - Initialisation du référentiel Git

Dans cette étape, nous allons initialiser le référentiel Git dans + / etc +.

Tout d’abord, allez dans le répertoire + / etc +.

cd /etc

Ensuite, initialisez le référentiel en exécutant la commande suivante.

sudo etckeeper init

Vous devriez recevoir le message suivant:

Initialized empty Git repository in /etc/.git/

Vous devriez maintenant voir le répertoire + .git et le fichier` + .gitignore` dans + / etc. Par exemple, si vous exécutez la commande suivante:

ls -la /etc | grep git

Vous devriez voir ces lignes incluses dans la sortie:

drwx------.  7 root     root       4096 Apr  2 21:42 .git
-rw-r--r--.  1 root     root        874 Apr  2 21:42 .gitignore
  • Remarque *: + .git + doit être protégé sur le système local (d’où les autorisations de lecture, d’écriture et d’exécution uniquement pour le superutilisateur); Comme les systèmes de contrôle de version ne suivent pas les autorisations de fichiers par eux-mêmes, etckeeper fournit plutôt cette fonctionnalité.

Le répertoire + .git + contient plusieurs fichiers de configuration et de description, ainsi que d’autres sous-répertoires destinés à être utilisés par Git. Le fichier + .gitignore +, qui spécifie explicitement les fichiers non suivis que git doit ignorer, est destiné à être géré par etckeeper dans son intégralité. Il est déconseillé de le modifier à la main, à une exception près.

Si vous ne souhaitez pas suivre certains fichiers à l’aide du contrôle de version, vous pouvez les ajouter manuellement au fichier .gitignore. Pour arrêter de suivre un fichier, ouvrez d’abord + .gitignore + pour l’éditer.

sudo nano .gitignore

La dernière ligne du fichier indiquera + # section finale gérée par etckeeper +. Ajoutez les noms de fichiers des fichiers que vous souhaitez ignorer, un par ligne, au-dessus de celui-ci.

# end section managed by etckeeper

Puis enregistrez et fermez le fichier.

En outre, vous devrez supprimer ces fichiers du cache actuellement géré par git puisque vous avez initialisé le référentiel local auparavant.

etckeeper vcs rm --cached

Répétez la commande ci-dessus pour autant de fichiers que vous avez précédemment ajoutés à + ​​.gitignore +.

Étape 4 - Valider + / etc + dans le référentiel Git

Dans cette étape, nous engagerons notre initial + / etc +.

Ajouter votre premier commit est facile. entrez simplement la commande suivante. Bien que cela ne soit pas strictement nécessaire, vous devez ajouter une description à chaque engagement pour pouvoir les identifier facilement par la suite.

sudo etckeeper commit ""

Vous devriez alors voir la liste sortie des fichiers en cours de validation dans votre référentiel, comme ci-dessous (tronqué):

create mode 100644 selinux/targeted/modules/active/modules/dnsmasq.pp
create mode 100644 selinux/targeted/modules/active/modules/dnssec.pp
create mode 100644 selinux/targeted/modules/active/modules/docker.pp
create mode 100644 selinux/targeted/modules/active/modules/dovecot.pp

Étape 5 - Faire des changements

Dans cette étape, nous allons apporter quelques modifications à un fichier dans + / etc + et les valider. Dans la prochaine étape, nous annulerons ces changements.

Tout d’abord, modifiez le contenu d’un fichier de votre choix. Par exemple, vous pouvez ajouter un nouvel hôte à la résolution de votre nom local en ajoutant une ligne composée d’une adresse IP et de son nom d’hôte associé à la fin de + / etc / hosts +.

Tout d’abord, ouvrez le fichier.

sudo nano /etc/hosts

Ensuite, ajoutez la ligne suivante à la fin du fichier.

192.168.0.2    node01

Enregistrez et fermez le fichier. Maintenant, engageons ce changement.

sudo etckeeper commit ""

Enfin, modifiez les autorisations du fichier.

sudo chmod 640 /etc/hosts

Et modifiez son propriétaire (en veillant à remplacer * sammy * par votre propre nom d’utilisateur).

sudo chown : /etc/hosts

Vous pouvez vérifier les permissions et la propriété actuelles de + / etc / hosts +.

ls -l /etc/hosts

Le résultat devrait ressembler à ceci:

-rw-r----- 1 sammy sammy 675 Apr 17 15:01 /etc/hosts

Étape 6 - Annulation des modifications

Maintenant testons les capacités de restauration d’etckeeper - pas seulement du fichier et de son contenu, mais aussi de ses permissions et de sa propriété.

Commencez par énumérer les commits que vous avez faits jusqu’à présent.

sudo git log --pretty=oneline

La première colonne de la sortie est un hachage SHA-1 qui identifie de manière unique le commit; la seconde est la description que vous avez utilisée lorsque vous avez soumis les modifications plus tôt.

Votre sortie devrait ressembler à ceci, avec des hachages différents.

d0958fbe4d947a6a3ad98141f9fe89d1fd1a95c4 Added a line to the hosts file
76c193da740a3e137fa000773a79de8bb5c898b7 First commit of my /etc directory

Prenez note du hachage de chaque commit. Vous les utiliserez pour revenir à cet état précédent.

Revenons + / etc / hosts + à la situation actuelle avant de commencer ce tutoriel. Remplacez les caractères en rouge par le hachage SHA-1 qui correspond à votre premier commit. Notez que vous n’avez pas besoin de spécifier la chaîne de hachage SHA-1 complète; quelques caractères qui l’identifient de façon unique feront l’affaire.

sudo etckeeper vcs checkout  /etc/hosts

Nous pouvons maintenant vérifier le contenu, les permissions et la propriété de + / etc / hosts + pour voir s’ils ont été modifiés.

Regardez les dernières lignes du fichier.

tail /etc/hosts

Vous devriez obtenir un résultat comme celui-ci, auquel il manque la ligne +192.168.0.2 node01 + que nous avons ajoutée, comme prévu.

...

# The following lines are desirable for IPv6 capable hosts
::1 test-etckeeper test-etckeeper
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

Vérifiez à nouveau les permissions et la propriété de + / etc / hosts +.

ls -l /etc/hosts

Vous verrez une sortie qui ressemble à ceci.

-rw-r--r-- 1 root root 704 Apr 17 15:01 /etc/hosts

Le contenu du fichier a été restauré correctement, ainsi que les autorisations et la propriété.

Conclusion

Dans ce tutoriel, nous avons expliqué comment utiliser etckeeper, un excellent outil pour stocker votre répertoire + / etc + dans un référentiel Git. Vous pouvez également utiliser un référentiel Bazaar, Mercurial ou Darcs.

Quel que soit le VCS de votre choix, etckeeper vous aidera à garder le contrôle de vos fichiers de configuration et à vous assurer que vous pouvez toujours revenir à un état antérieur si vous devez annuler des modifications ou des fonctionnalités.