Tag Archives: etc

etckeeper en mode silenciós

Hi ha eines que quan les descobreixes et semblen genials. Aquest és el cas de etckeeper, una eina que permet mantenir el directori /etc sota un sistema de control de versions (VCS) com ara git, mercurial, bzr o darcs. Un dels seus avantatges principals és que guarda una còpia abans i després d’instal·lar paquets al sistema, de forma que és molt fàcil de veure els canvis que es produeixen a les configuracions. Un altre és que s’acostuma a executar diàriament una còpia dels canvis mitjançant un crontab i si hi ha canvis es mostren en el correu corresponent que envia el dimoni cron. D’aquesta manera si faig canvis al /etc i no els he desat, el cron s’encarregarà de fer-ho un cop al dia.

Però aquest darrer avantatge es pot convertir en un greu inconvenient si instal·leu etckeeper en un clúster relativament gran o si gestioneu molts servidors. Idealment, per cada canvi que es faci al /etc caldria executar després «etckeeper commit …» per tal de guardar els canvis al VCS. Per exemple,  després de canviar la contrasenya d’un usuari o d’afegir-ne un de nou. Però si us oblideu de fer-ho, l’endemà potser us trobeu més d’un centenar de correus amb els canvis de cada servidor.

Doncs bé, una opció és acceptar que només us interessa rebre missatges en cas que es produeixi un error i els canvis diaris que es facin silenciosament. La primera idea que se’ns podria ocórrer és canviar el crontab del etckeeper perquè enviés la sortida estàndard a /dev/null però resulta que «bzr commit» (per defecte, etckeeper a ubuntu tria bzr com a VCS) treu el seu informe per l’error estàndard! Com que redirigir també l’error estàndard a /dev/null sempre és una mala idea (si es produís un error no us n’assabentaríeu), cal buscar una altra estratègia. Afortunadament és possible canviar les opcions dels diferents VCS a la configuració i per al cas de bzr només cal posar això al fitxer /etc/etckeeper/etckeeper.conf:

BZR_COMMIT_OPTIONS="-q"

Amb el que cada cop estic més a prop de tenir menys correu a la bústia d’entrada 🙂