GNU/Linux >> Tutoriels Linux >  >> Linux

Est-ce une bonne idée d'utiliser git pour contrôler la version du fichier de configuration ?

La réponse courte à votre question est Oui .

Je n'hésiterais pas à recommander Git (ou tout autre logiciel de contrôle de version) pour garder une trace des fichiers de configuration. Depuis, je suis plus productif (en particulier pour la configuration de nouvelles installations) et j'ai une plus grande confiance dans mes fichiers de configuration. Avec le contrôle de version, j'ai un enregistrement de quoi des modifications ont été apportées et le message de validation fournit la raison pourquoi le changement a été effectué. Si un changement a des effets secondaires imprévus, je peux facilement consulter le journal/l'historique pour voir quel changement a causé les effets.

Personnellement, je me méfierais du suivi de tous les fichiers sous le / répertoire racine. La liste des chemins à ignorer pourrait devenir longue et peu maniable. Je préfère conserver chaque ensemble logique de fichiers dans leur propre référentiel.

J'utilise manuellement Git pour garder une trace de mon personnel fichiers de configuration / de démarrage, par exemple, la configuration de Vim, les fonctions Bash, les alias, etc. - similaire à l'approche répertoriée dans Comment suivre $HOME avec git. Je conserve chaque ensemble de fichiers dans leur propre référentiel et j'utilise des liens symboliques vers le répertoire personnel.

Pour système fichiers de configuration, j'utilise Git avec Etckeeper pour garder une trace des fichiers dans mon /etc répertoire.

Inconvénients

Un problème dont il faut se méfier est si les fichiers suivis incluent des liens physiques . Lorsque Git est utilisé pour extraire des fichiers ou modifier autrement l'arborescence de travail, il dissocie les fichiers, puis les recrée. Voir Git, Dotfiles et Hardlinks pour une explication plus complète.

Etcgardien

Etckeeper peut être utilisé pour conserver un historique complet des modifications apportées à /etc. Il suit les métadonnées des fichiers que les systèmes de contrôle de révision ne prennent normalement pas en charge, mais c'est important pour /etc , comme les autorisations de /etc/shadow .

Il se connecte aux gestionnaires de packages tels que apt et yum et (dans sa configuration par défaut), s'exécute avant et après l'installation afin que toutes les modifications soient apportées à /etc sont suivis.

Si un paquet est installé ou supprimé, toutes les modifications non validées dans /etc seront validées avant l'opération de package afin qu'il y ait deux validations :

  1. "enregistrer les modifications non validées dans /etc avant l'exécution de yum"
  2. "commettre les modifications dans /etc après l'exécution de yum"

Je l'ai utilisé avec des distributions basées sur Debian et Red Hat et je sais qu'il prend en charge la gestion des packages Arch. Je ne peux pas dire combien d'automatisation cela ajouterait à un système Gentoo mais un paquet est disponible pour cela.

Il prend également en charge le transfert des fichiers de configuration vers un dépôt distant (qui devrait, bien sûr, être privé).

Configuration

Après avoir installé le package, vous devrez peut-être le configurer (/etc/etckeeper/etckeeper.conf ), par exemple, sur les systèmes Ubuntu, le système de contrôle de version par défaut est modifié de Git à Bazaar. Vous pouvez également désactiver les commits automatiques quotidiens .

Commitations automatiques quotidiennes

Les modifications peuvent être automatiquement validées par une tâche cron quotidienne . Cela peut être ennuyeux car le référentiel peut être encombré de plusieurs messages de validation automatisés.

Je décommente la ligne appropriée dans /etc/etckeeper/etckeeper.conf :

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

Ignorer certains fichiers

Modifier /etc/.gitignore pour spécifier les fichiers qui ne doivent pas être suivis.

Première exécution

Après la configuration, exécutez les commandes suivantes :

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Si votre répertoire actuel est etc , vous pouvez exécuter la norme git commandes, par exemple,

sudo git status
sudo git log

J'utilise git pour suivre des zones spécifiques de mon répertoire personnel. Personnellement, je n'emprunterais pas la voie du suivi du répertoire racine, mais je dois dire que j'admire votre ambition. :)

Peut-être que cette collection d'expériences pourrait vous donner une meilleure idée de ce dans quoi vous pourriez vous embarquer :

effets de l'initialisation du référentiel git sur le répertoire racine Linux 3 :)

Toutes mes excuses pour une "réponse", au lieu de simplement lancer le lien dans un commentaire ; cependant, pas assez de représentants, mais souhaitait intervenir.

Modifier

Ouah! Très belle réponse de @AnthonyGeoghegan. Je crois que ce n'est pas aussi difficile que je l'avais imaginé à l'origine.


Linux
  1. Comment utiliser Inotifywait pour surveiller un répertoire pour la création de fichiers d'une extension spécifique ?

  2. Script Shell pour déplacer les fichiers les plus anciens ?

  3. Attendre la fin du téléchargement de plusieurs fichiers ?

  4. Comment utiliser Logrotate pour gérer les fichiers journaux

  5. Besoin d'un bon éditeur hexadécimal pour Linux

Comment utiliser CherryTree pour la prise de notes

Utilisez Git pour effectuer une sauvegarde des fichiers de configuration sous Linux

Comment utiliser la commande SCP pour le transfert de fichiers

Comment utiliser la commande SCP pour transférer des fichiers en toute sécurité

Commande ls sous Linux pour lister les fichiers

Fichiers d'inventaire et de configuration Ansible