Cómo administrar/etc con el control de versiones usando Etckeeper en Linux


En la estructura de directorios de Unix/Linux, el directorio /etc es donde se encuentran los directorios y archivos de configuración de todo el sistema específicos del host; es una ubicación central para todos los archivos de configuración de todo el sistema. Un archivo de configuración es un archivo local que se utiliza para controlar cómo funciona un programa; debe ser estático y no puede ser un binario ejecutable.

Para realizar un seguimiento de los cambios en los archivos de configuración del sistema, los administradores del sistema normalmente realizan copias (o copias de seguridad) de los archivos de configuración antes de modificarlos. De esa manera, si modificaron directamente el archivo original y cometieron un error, pueden volver a la copia guardada.

Etckeeper es una colección de herramientas simple, fácil de usar, modular y configurable que permite administrar /etc mediante el control de versiones. Le permite almacenar cambios en el directorio /etc en un sistema de control de versiones (VCS) como git (que es el VCS preferido), repositorio mercurial, bazaar o darcs. Por lo tanto, le permite usar git para revisar o revertir los cambios realizados en /etc , en caso de error.

Sus otras características son:

  1. admite la integración con administradores de paquetes front-end, incluidos Zypper y pacman-g2, para confirmar automáticamente los cambios realizados en /etc durante las actualizaciones de paquetes.
  2. realiza un seguimiento de los metadatos del archivo (como los permisos del archivo) que git no suele admitir, pero que es importante para /etc , y
  3. incluye tanto un trabajo cron como un temporizador systemd, cada uno de los cuales puede realizar cambios existentes en /etc automáticamente una vez al día.

Cómo instalar Etckeeper en Linux

Etckeeper está disponible en Debian, Ubuntu, Fedora y otras distribuciones de Linux. Para instalarlo, use su administrador de paquetes predeterminado como se muestra. Tenga en cuenta que este comando también instalará git y algunos otros paquetes como dependencias.

$ sudo apt-get install etckeeper	#Ubuntu and Debian
# apt-get install etckeeper		#Debian as root user
# dnf install etckeeper			#Fedora 22+
$ sudo zypper install etckeeper	        #OpenSUSE 15

En distribuciones de Enterprise Linux como RedHat Enterprise Linux (RHEL), CentOS y otras, debe agregar el repositorio EPEL antes de instalarlo como se muestra.

# yum install epel-release
# yum install etckeeper

Configuración de Etckeeper en Linux

Una vez que haya instalado etckeeper como se muestra arriba, necesita configurar cómo funcionará y su archivo de configuración principal es /etc/etckeeper/etckeeper.conf. Para abrirlo y editarlo, use cualquiera de sus editores de texto favoritos como se muestra.

# vim /etc/etckeeper/etckeeper.conf
OR
$ sudo nano /etc/etckeeper/etckeeper.conf

El archivo contiene varias opciones de configuración (cada una con una descripción de uso pequeña y clara) que le permiten configurar el sistema de control de versiones (VCS) para usar, pasar opciones a VSC; para habilitar o deshabilitar el temporizador, habilitar o deshabilitar la advertencia de archivo especial, habilitar o deshabilitar etckeeper para que no confirme los cambios existentes en /etc antes de la instalación.

Además, puede configurar el administrador de paquetes de front-end o de nivel superior (como rpm, etc.) para que funcione con etckeeper.

Si ha realizado algún cambio en el archivo, guárdelo y ciérrelo.

Inicializar el repositorio de Git y realizar la confirmación inicial

Ahora que ha configurado etckeeper, necesita inicializar el repositorio de Git para comenzar a rastrear cualquier cambio en su directorio /etc de la siguiente manera. Solo puede ejecutar etckeeper con permisos de root; de lo contrario, use sudo.

$ cd 
$ sudo etckeeper init

A continuación, paso para que etckeeper pueda funcionar automáticamente, debe ejecutar la primera confirmación para comenzar a realizar un seguimiento de los cambios en /etc , de la siguiente manera.

$ sudo etckeeper commit "first commit"

Después de ejecutar su primera confirmación, etckeeper a través de git ahora está rastreando cualquier cambio en el directorio /etc . Ahora intente realizar cambios en cualquiera de los archivos de configuración.

Luego ejecute el siguiente comando para mostrar los archivos que han cambiado desde la última confirmación; este comando esencialmente muestra los cambios en /etc no preparados para confirmación, donde VCS significa git y "status" es un subcomando git.

$ sudo etckeeper vcs status

Luego, confirme los cambios recientes de la siguiente manera.

$ sudo etckeeper commit "changed hosts and phpmyadmin config files"

Para ver un registro de todas las confirmaciones (la identificación y el comentario de cada confirmación), puede ejecutar el siguiente comando.

$ sudo etckeeper vcs log

También puede mostrar los detalles de una confirmación, simplemente especifique la ID de la confirmación (los primeros caracteres pueden funcionar) como se muestra:

$ sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
$ sudo etckeeper vcs show a153b6847

Además, puede ver la diferencia entre dos confirmaciones como se muestra. Esto es especialmente útil si desea revocar cambios como se muestra en la siguiente sección. Puede usar las teclas de flecha para desplazarse hacia arriba y hacia abajo o hacia la izquierda y la derecha, y salir presionando q .

$ sudo etckeeper vcs show 704cc56 a153b6847

La esencia de etckeeper es ayudarlo a rastrear los cambios en su directorio /etc y revertir los cambios donde sea necesario. Suponiendo que se dé cuenta de que cometió algunos errores en /etc/nginx/nginx.conf la última vez que lo editó y que el servicio Nginx no se puede reiniciar debido a errores en la estructura de configuración, puede volver a la copia guardada en una determinada commit (por ejemplo, 704cc56) donde cree que la configuración era correcta de la siguiente manera.

$ sudo etckeeper vcs checkout 704cc56 /etc/nginx/nginx.conf

Alternativamente, puede cancelar todos los cambios y volver a las versiones de todos los archivos en /etc (y sus subdirectorios) almacenados en una confirmación específica.

$ sudo etckeeper vcs checkout 704cc56 

Cómo permitir que los cambios se confirmen automáticamente

Etckeeper también se envía con un servicio y unidades de temporizador para Systemd, incluidos en el paquete. Para iniciar "Autocommit" de cambios en el directorio /etc , simplemente inicie la unidad etckeeper.timer por ahora y verifique si está en funcionamiento, como se indica a continuación.

$ sudo systemctl start etckeeper.timer
$ sudo systemctl status etckeeper.timer

Y habilítelo para que se inicie automáticamente al arrancar el sistema como se muestra.

$ sudo systemctl enable etckeeper.timer

Para obtener más información, consulte la página del proyecto Etckeeper: https://etckeeper.branchable.com/.

En esta guía, hemos mostrado cómo instalar y usar etckeeper para almacenar cambios en el directorio /etc en un sistema de control de versiones (VCS) como git y revisar o revertir los cambios que se realizaron en /etc , cuando sea necesario. Comparta sus pensamientos o haga preguntas sobre etckeeper a través del formulario de comentarios a continuación.