etckeeper (Español)

From ArchWiki

Esta traducción de Etckeeper fue revisada el 2020-02-19. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Etckeeper es una colección de herramientas para realizar un seguimiento de /etc/ en un repositorio (Git, Mercurial, Bazaar o Darcs son ​​compatibles). Un hook de pacman confirma automáticamente los cambios antes de realizar un seguimiento de la actualización del sistema y de los permisos de los archivos, cuyo control de versión normalmente no admite, pero es importante para archivos como /etc/shadow.

Instalación

Instale el paquete etckeeper.

Configuración

El sistema de control de versiones preferido (el predeterminado es git) y otras opciones se configura en /etc/etckeeper/etckeeper.conf.

Etckeeper admite el uso de pacman como LOWLEVEL_PACKAGE_MANAGER y HIGHLEVEL_PACKAGE_MANAGER en etckeeper.conf.

Utilización

Después de la configuración, el repositorio de la ruta /etc debe inicializarse:

# etckeeper init

Y realice una primera confirmación para realizar un seguimiento de los cambios, este es un paso necesario para que etckeeper pueda trabajar automáticamente:

# etckeeper commit "first commit"

A partir de la versión 1.18.3-1 de etckeeper, los hooks de pacman de antes y después de la instalación se ejecutan automáticamente en la instalación, actualización y eliminación de paquetes. Ya no es necesario un #Script contenedor manual.

Para rastrear otros cambios en la ruta /etc, debe confirmar los cambios manualmente (véase la página de manual etckeeper(8) para las órdenes) o utilice una de las soluciones de interrupción siguientes.

systemd

Las unidades de servicio y temporizador están incluidas en el paquete. Simplemente habilite etckeeper.timer.

Véase Systemd/Timers para obtener más información y Modificar los archivos de unidad suministrados si desea editar las unidades proporcionadas.

Cron

Hay un script de cron en la distribución de origen. Puede utilizar este script para confirmar automáticamente los cambios en una programación.

Por ejemplo, para hacerlo funcionar diariamente:

  1. Tenga cron instalado y habilitado.
  2. Coloque el script como /etc/cron.daily/nombre_del_script
  3. Permita la ejecución del archivo para el superusuario root (# chmod u+x /etc/cron.daily/'nombre_del_script ).

Véase cron#Cronie, cron para más información.

Incron

Nota: Esta sección se aplica solo a la versión 5.10 de incron.

Para crear confirmaciones automáticamente en cada modificación de los archivos dentro de /etc/, utilice incron. Este utiliza la señalización nativa del sistema de archivos a través de inotify(7).

Después de instalar incron e inicializar etckeeper, añada root a los usuarios autorizados para ejecutar los scripts de incron:

# echo root | sudo tee -a /etc/incron.allow

Luego edite incrontab con:

# sudo incrontab -e

Añada en el texto:

# /etc IN_MODIFY,IN_NO_LOOP /bin/etckeeper commit "[mensaje]"

IN_NO_LOOP es un indicador que espera a que finalice la confirmación antes de ejecutar la siguiente orden, y evita un bucle infinito.

Donde [mensaje] podría ser algo así como "modificado $#" donde $# es un comodín incrontab especial expandido al nombre del archivo modificado.

Tenga en cuenta que Incron no es capaz de ver subdirectorios. Solo los archivos dentro de la ruta serán monitorizados. Si necesita que se supervisen los subdirectorios, debe darles su propia entrada. Sin embargo, los commits cuando se modifican los archivos de nivel superior seguirán confirmando todos los cambios.

Véase: [1], incrond(8)

Escritura automática en un repositorio remoto

Si bien tener una copia de seguridad local en /etc/.git es un buen primer paso, etckeeper puede enviar automáticamente los cambios en cada confirmación a un repositorio remoto como Github.

Primero, edite etc/.git y añada su repositorio remoto de Github:

# git remote add origin https://github.com/user/repo.git

A continuación, se debe usar o configurar un hook para escribir.

Utilizando el hook proporcionado por etckeeper

Edite la opción PUSH_REMOTE en /etc/etckeeper/etckeeper.conf, con el nombre del repositorio remoto en el que desea que etckeeper escriba. Por ejemplo:

PUSH_REMOTE="origin"

Se pueden añadir múltiples repositorios remotos separados con espacios.

A través de un hook personalizado

Cree un archivo ejecutable /etc/etckeeper/commit.d/40github-push:

#!/bin/sh
set -e

if [ "$VCS" = git ] && [ -d .git ]; then
  cd /etc/
  git push origin master
fi

Ahora, cada vez que ejecute su script contenedor o el alias de antes, los cambios se asignarán automáticamente a su repositorio de Github.

Script contenedor

Si desea realizar el seguimiento de los cambios de una orden ejecutada frecuentemente (por ejemplo, orden), un simple script contenedor puede ayudar a automatizarlo. Por ejemplo, cree:

/usr/local/bin/checketc.sh
#!/bin/bash

etckeeper pre-install
orden
etckeeper post-install

y hágalo ejecutable. Alternativamente, puede llamar las órdenes de Etckeeper a través de un alias o función bash, véase Alias en Bash para obtener más información.

Nota: Antes de la versión 1.18.3-1 de Etckeeper, dicho script contenedor manual era necesario para la integración con Pacman. Ahora los hooks de Pacman ejecutan las órdenes automáticamente.