Articolo basato sul lavoro di Angelo D’Autilia pubblicato su Salug Journal
Uno strumento utile per la gestione condivisa di un server è etckeeper.
Questo software e’ una collezione di script bash che consentono di tenere sotto controllo tramite un sistema di revisione distribuito la nostra directory /etc/
dove sono presenti i file di configurazione della maggior parte dei nostri servizi in Linux.
Si potrebbe fare la stessa cosa senza etckeeper appoggiandosi ad un sistema di revisione come darcs o git, ma dobbiamo ricordarci che per questa directory è fondamentale mantenere per ogni file, oltre i permessi anche il proprietario ed il gruppo nonche tutta la struttura di directory comprese quelle vuote.
Etckeeper ci aiuta nella gestione automatizzando molti di questi compiti.
Il pacchetto di etckeeper è disponibile per Debian, Ubuntu, Fedora, e molte della distribuzione più comuni, quindi potete installarlo con il vostro gestore di pacchetti, su Debian e Ubuntu potete usare: sudo aptitude install etckeeper
Aptitute provvedera’ a installare tutti i pacchetti necessari per far funzionare etckeeper ed effettuera’ il primo commit con bzr (bazar)
Se si ha intenzione di non utilizzare bazar ma un altro prodotto di controllo di revisione come ad esempio git bisogna azzerare l’inizializzazione di etckeeper con il comando:
etckeeper uninit
Ed installare il sistema di revisione preferito, etckeeper supporta hg, git, bzr e darcs, per usare git basta installarlo
sudo aptitude install git
E cambiare nel file di configurazione /etc/etckeeper/etckeeper.conf il parametro VCS:
# Il VCS da utilizzare, ho commentato bzr e tolto il commento da git #VCS="hg" VCS="git" #VCS="bzr" #VCS="darcs" # Opzioni passate a git commit quando eseguito da etckeeper. GIT_COMMIT_OPTIONS="" # Opzioni passate a hg commit quando eseguito da etckeeper. HG_COMMIT_OPTIONS="" # Opzioni passate a bzr commit quando eseguito da etckeeper. BZR_COMMIT_OPTIONS="" # Opzioni passate a darcs commit quando eseguito da etckeeper. DARCS_COMMIT_OPTIONS="-a" #Togliere il commento al fine di evitare che etckeeper faccia un commit delle modifiche esistenti # In /etc automaticamente una volta al giorno. #AVOID_DAILY_AUTOCOMMITS=1 # Decommentate la seguente opzione per evitare i messaggi di avvertimento sui file speciale # (L'opzione è attivata automaticamente dal cronjob). #AVOID_SPECIAL_FILE_WARNING=1 # Togliere il commento per evitare che etckeeper faccia commit di cambiamenti esistenti per # /etc prima dell'installazione. Sarà annullata l'installazione, # In modo da poter applicare le modifiche a mano. #AVOID_COMMIT_BEFORE_INSTALL=1 # Il gestore di pacchetti utilizzato ad alto livello # (apt, pacman-g2, yum etc) HIGHLEVEL_PACKAGE_MANAGER=apt # Il gestore di pacchetti utilizzato a basso livello # (dpkg, rpm, pacman-g2, etc) LOWLEVEL_PACKAGE_MANAGER=dpkg
Se avete cambiato VCS è giunto il momento di fare il vostro primo commit (non avete bisogno di questo se si utilizza bazar)
etckeeper init
Questo inizializza e imposta un repository Git, Mercurial, Bazaar, o darcs (a seconda dell’impostazione VCS in /etc/etckeeper/etckeeper.conf). Tipicamente questo viene eseguito per la /etc, una volta all’installazione di etckeeper su una macchina. Può anche essere utilizzato per inizializzare un clone del repository /etc ubicato altrove.
Usare etckeeper
Userò Bazar come sistema VCS nei seguenti esempi
Ora aggiungo il file “test” in /etc/ e dopo questo eseguo un commit, con i seguenti comandi:
$ sudo touch /etc/test $ etckeeper vcs status /etc/ unknown: test $ etckeeper commit "test" Committing to: /etc/ modified .etckeeper added test Committed revision 2. $ etckeeper vcs log --line 2: linuxaria 2012-06-02 test 1: linuxaria 2012-06-02 First Commit |
Quindi, le opzioni di etckeeper che ho utilizzato fino ad ora sono:
vcs status È possibile utilizzare “VCS sottocomando” per eseguire ogni comando del VCS che è configurato per essere utilizzato in etckeeper. Sarà eseguito in /etc, Ad esempio, “etckeeper status vcs” eseguirà “bzr status /etc/”
commit “test” Esegue il commit di tutte le modifiche in /etc al repository. Un messaggio di commit può essere specificato, nel mio esempio è solo “test”. È inoltre possibile utilizzare il VCS sottostante e fare un commit manualmente. (etckeeper commit
noterà se un utente ha utilizzato sudo o su per diventare root, e registrerà il nome originale nel commit.)
vcs log –line Qua usiamo ancora una volta l’opzione vcs che ci permette di chiamare un sottocomando bazar, in questo caso log
che mostra i log storici per un ramo o un sottoinsieme di un ramo.
Un’altra utile opzione che è possibile utilizzare è vcs diff
che mostra le differenze nell’attuale albero di lavoro, fra le revisioni, in questo esempio ci sono i cambiamenti nella mia revisione 2 (opzione -c2)
sudo etckeeper vcs diff -c2 [sudo] password for linuxari: === modified file '.etckeeper' --- .etckeeper 2012-06-02 10:03:22 +0000 +++ .etckeeper 2012-06-02 10:08:53 +0000 @@ -1987,6 +1987,7 @@ maybe chmod 0755 './systemd/system/multi-user.target.wants' maybe chmod 0755 './terminfo' maybe chmod 0644 './terminfo/README' +maybe chmod 0644 './test' maybe chmod 0755 './texmf' maybe chmod 0755 './texmf/dvipdfm' maybe chmod 0755 './texmf/dvipdfm/config' === added file 'test' |
Estendibilità di etckeeper
Un’0altra caratteristica di etckeeper è la sua estendibilità, infatti già dall’installazione base sono presenti nella cartella /etc/etckeeper una serie di directory con nome .d che rappresentano le varie operazioni che esegue etckeeper, abbiamo quindi questa struttura (output del comando tree
)
. ├── commit.d │ ├── 10vcs-test │ ├── 30bzr-add │ ├── 30darcs-add │ ├── 30git-add │ ├── 30hg-addremove │ ├── 50vcs-commit │ └── README ├── etckeeper.conf ├── init.d │ ├── 10restore-metadata │ ├── 20restore-etckeeper │ ├── 40vcs-init │ ├── 50vcs-ignore │ ├── 50vcs-perm │ ├── 50vcs-pre-commit-hook │ ├── 60darcs-deleted-symlinks │ ├── 70vcs-add │ └── README ├── list-installed.d │ └── 50list-installed ├── post-install.d │ ├── 50vcs-commit │ └── README ├── pre-commit.d │ ├── 20warn-problem-files │ ├── 30store-metadata │ └── README ├── pre-install.d │ ├── 10packagelist │ ├── 50uncommitted-changes │ └── README ├── unclean.d │ ├── 50test │ └── README ├── uninit.d │ ├── 01prompt │ ├── 50remove-metadata │ ├── 50vcs-uninit │ └── README ├── update-ignore.d │ ├── 01update-ignore │ └── README └── vcs.d └── 50vcs-cmd
Così, quando eseguiamo etckeeper commit
chiediamo ad etckeeper di eseguire tutti gli script che sono presenti nella directory /etc/etckeeper/commit.d, quindi è facile aggiungere nuovi comandi in quella cartella o creare una nuova directory command.d e mettere i vostri script all’interno di questa nuova directory, ampliando così le opzioni ed i comandi disponibili ad etckeeper.
Conclusioni
Etckeeper è un software facile da configurare che vi può salvare quando qualcosa di veramente brutto capita ad un file di configurazione. Ha hooks per i gestori di pacchetti più comuni in modo che quando si installa e rimuove il software sia consapevole di questo, e out of the box fa un commit al giorno del vostro /etc/. Potete ora rilassarvi..un po di più.
Popular Posts:
- None Found