etckeeper (Español)
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
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:
- Tenga cron instalado y habilitado.
- Coloque el script como
/etc/cron.daily/nombre_del_script
- 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
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.