Aller à la recherche

FreeBSD Contrôle de version des fichiers de configuration

FreeBSD dispose en interne d'outil permettant de mettre en place un contrôle de version de vos fichiers (ici de configuration). Il permet de garder un enregistrement de toutes les modifications et des raisons de celle-ci, afin de pouvoir revenir assez facilement à des versions antérieures.

Freebsd : l'historique des modifications de vos fichiers de configuration

Nous allons mettre ici en place un contrôle de version sur le fichier rc.conf grâce à trois commandes

  • ci pour check in (enregistrement)
  • co pour check out (consultez)
  • rcs pour Revision Control System

Il faut voir le système comme une bibliothèque où l'on empreinte (check out) et où on rend (check in) des livres (ici des fichiers), et que le bibliothécaire note l'état dans lequel nous le rendons.

Afin de suivre les modifications apportées sur un fichier, nous devons le placer sous surveillance. Pour ceci, nous allons tout d'abord créer un répertoire RCS (attention en majuscule) qui contiendra les fichiers à suivre, si nous ne créons pas ce répertoire rcs va stocker dans le même répertoire que le fichier à surveiller ce qui peut polluer inutilement. mkdir /etc/RCS

Initialisation du contrôle de version

Nous allons indiquer à rcs que nous voulons faire le suivi du fichier rc.conf ci rc.conf RCS/rc.conf,v <-- rc.conf enter description, terminated with single '.' or end of file: NOTE: This is NOT the log message! Configuration initiale . initial revision: 1.1 done

Si nous vérifions notre répertoire RCS, nous pouvons voir qu'il a crée un fichier rc.conf,v ls -l RCS -r-xrr 1 root wheel 694 Jan 3 11:43 rc.conf,v*

Si nous contrôlons notre fichier original ls -l rc.conf ls: rc.conf: No such file or directory Nous pouvons voir qu'il n'existe plus, ce qui peut être problématique pour un fichier aussi important sous freebsd. Nous allons donc demander à rcs de placer une version "propre" dans le répertoire. co rc.conf RCS/rc.conf,v --> rc.conf revision 1.1 done ls -l rc.conf -rrr-- 1 root wheel 494 Jan 3 11:47 rc.conf

Nous pouvons voir que nous n'avons plus les droits d'écriture, ce qui pour le bon déroulement du démarrage du système n'est pas un problème.

Apporter des modifications

Nous allons maintenant demander à rcs de nous fournir une version éditable. co -l rc.conf RCS/rc.conf,v --> rc.conf revision 1.1 (locked) done

Vous avez remarqué le locked qui nous averti que ce fichier a été verrouillé pour moi et que je suis le seul à pouvoir l'éditer actuellement.

Nous allons apporter nos modifications echo 'apache24_enable="YES"' >> /etc/rc.conf

Nous allons maintenant rendre le fichier à rcs et y placer un message suivi d'une nouvelle ligne qui ne contient qu'un "." ci -u rc.conf RCS/rc.conf,v <-- rc.conf new revision: 1.2; previous revision: 1.1 enter log message, terminated with single '.' or end of file: >> Ajout lancement apache 2.4 >> . done

Le fichier a repris son caractère non éditable. ls -l rc.conf -rrr-- 1 root wheel 494 Jan 3 11:47 rc.conf

Historique des modifications

Nous pouvons visionner l'historique des modifications grâce à rlog rlog rc.con RCS file: RCS/rc.conf,v Working file: rc.conf head: 1.3 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 3; selected revisions: 3 description: Configuration initiale revision 1.3 date: 2017/01/03 11:16:56; author: root; state: Exp; lines: +0 -1 Suppression service OpenVPN revision 1.2 date: 2017/01/03 11:15:58; author: root; state: Exp; lines: +1 -0 Ajout lancement apache 2.4 revision 1.1 date: 2017/01/03 11:13:27; author: root; state: Exp; Initial revision =============================================================================

Nous pouvons voir que le fichier a subit depuis le commit initial deux modifications : un ajout +1 -0 et une suppression de ligne +0 -1

Aller un peu plus loin

Il est possible de voir exactement ce qui a été modifié entre 2 révisions pour cela nous utilisons l'outil rcsdiff

Afficher la différence entre la révision 1.2 et 1.3 rcsdiff -u -r1.2 -r1.3 rc.conf

===================================================================
RCS file: RCS/rc.conf,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- rc.conf	2017/01/03 11:15:58	1.2
+++ rc.conf	2017/01/03 11:16:56	1.3
@@ -10,7 +10,6 @@
 
 
 
-openvpn_enable="YES"
 
 nfs_server_enable="YES"
 nfsv4_server_enable="YES"

Revenir à une version antérieur

Il est aisé de revenir à une version antérieur, mais il est certainement pas prudent de revenir en écrasant toutes les modifications entre l'état actuel et la révision à laquelle, nous souhaitons revenir. Nous allons créer un fichier intermédiaire, où nous pourrons récupérer les modifications et les incorporer à la dernière version (cela reste primaire par rapport à GIT mais ce n'est pas le but de l'outil) co -r1.2 -p rc.conf > /etc/rc.conf.r1.2 RCS/rc.conf,v --> standard output revision 1.2

  • -p : permet d'affiche le fichier sur la sortie stdout
  • > : redirige la sortie vers le fichier

Conclusion

Un outil très pratique pour une efficacité inégalable, une fois que vous avez compris comment cela fonctionne.

La discussion continue ailleurs

URL de rétrolien : https://www.binsp.net/?trackback/28

Fil des commentaires de ce billet

Page top