Monitorare e backuppare i cambiamenti della configurazione: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(13 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}}


== Introduzione ==
== Introduzione ==
In un server è fondamentale avere il completo controllo della directory <tt>/etc</tt>, dove risiedono tutti i file di configurazione del sistema.
In un server è fondamentale avere il completo controllo della directory <code>/etc</code>, dove risiedono tutti i file di configurazione del sistema.
<br/>
<br/>
Un metodo molto semplice, efficace e poco faticoso è utilizzare il software ''etchkeeper''. Questo software e’ una collezione di script bash che consentono di tenere sotto controllo tramite un sistema di revisione distribuito la nostra directory <tt>/etc</tt>, dove sono appunto presenti i file di configurazione della maggior parte dei nostri servizi in Linux.
Un metodo molto semplice, efficace e poco faticoso è utilizzare il software ''etckeeper''. Questo software e’ una collezione di script bash che consentono di tenere sotto controllo tramite un sistema di revisione distribuito la nostra directory <code>/etc</code>, dove sono appunto presenti i file di configurazione della maggior parte dei nostri servizi in Linux.


== Installazione ==
== Installazione ==
L'installazione è molto semplice:
<pre>
# apt-get install etckeeper bzr
</pre>
Il pacchetto ''etckeeper'' si appoggia, per tenere traccia dei cambiamenti, a un software di controllo versione: possiamo scegliere quello che preferiamo tra Git, Subversion, Bazaar, etc.
<br/>
In questa guida la scelta è caduta su Bazaar, un software leggero e adatto a installazioni piccole o di singoli server.
== Configurazione ==
Una volta installato, apriamo il file di configurazione:
<pre>
# nano /etc/etckeeper/etckeeper.conf
</pre>
e impostiamo il software di controllo versione che intendiamo usare:
<pre>
# The VCS to use.
#VCS="hg"
#VCS="git"
VCS="bzr"
#VCS="darcs"
</pre>
lasciando immodificate le altre linee del file.
<br/><br/>
Per inizializzare etckeeper lanciamo il comando:
<pre>
# etckeeper init
</pre>
In caso apportassimo delle modifiche al file di configurazione <code>/etc/etckeeper/etckeeper.conf</code>, potremo (se lo desideriamo) reinizializzare la configurazione:
<pre>
# etckeeper uninit
# nano /etc/etckeeper/etckeeper.conf
# etckeeper init
</pre>
tenendo presente che una reinizializzazione, azzera tutte le informazioni archiviate da etckeeper.
<br/>
<br/>
etckeeper farà il primo commit automaticamente quando verrà installato un software che modifica la directory <code>/etc directory</code>, ma se non vogliamo aspettare, possiamo lanciare il primo commit manualmente:
<pre>
# etckeeper commit "Initial commit"
</pre>
== Utilizzo ==
Per impostazione predefinita, etckeeper effettua un commit ogni giorno.
<br/>
Possiamo comunque effettuare manualmente dei commit, ad esempio dopo aver apportato delle modifiche ai file di configurazione di qualche servizio.
<br/>
Supponiamo di aver modificato il file <code>/etc/hosts</code>. Con il comando:
<pre>
# bzr status /etc/
</pre>
possiamo vedere quali file sono cambiati dall'ultimo commit:
<pre>
root@server1:~# bzr status /etc/
modified:
  hosts
root@server1:~#
</pre>
Possiamo quindi effettuare un nuovo commit dei file che ci interessano:
<pre>
# etckeeper commit "Changed /etc/hosts"
</pre>
<pre>
root@server1:~# etckeeper commit "Changed /etc/hosts"
Committing to: /etc/
modified hosts
Committed revision 3.
root@server1:~#
</pre>
== Ripristinare i cambiamenti ==
Con Bazaar possiamo tornare a una versione precedente dei file modificati. Per farlo, ci occorre conoscere il numero di versione da ripristinare.
<br/>
Ad esempio:
<pre>
# bzr log /etc/hosts
</pre>
ci mostrerà tutte le versioni archiviate del file <code>/etc/hosts</code>:
<pre>
root@server1:~# bzr log /etc/hosts
------------------------------------------------------------
revno: 5
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 17:00:22 +0200
message:
  Changed /etc/hosts
------------------------------------------------------------
revno: 4
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 16:59:03 +0200
message:
  Changed /etc/hosts
------------------------------------------------------------
revno: 3
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 16:45:21 +0200
message:
  Changed /etc/hosts
------------------------------------------------------------
revno: 1
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 16:43:39 +0200
message:
  saving uncommitted changes in /etc prior to apt run
root@server1:~#
</pre>
Il comando:
<pre>
# bzr log /etc
</pre>
ci mostrerà le versioni dell'intera directory <code>/etc</code>:
<pre>
root@server1:~# bzr log /etc
------------------------------------------------------------
revno: 5
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 17:00:22 +0200
message:
  Changed /etc/hosts
------------------------------------------------------------
revno: 4
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 16:59:03 +0200
message:
  Changed /etc/hosts
------------------------------------------------------------
revno: 3
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 16:45:21 +0200
message:
  Changed /etc/hosts
------------------------------------------------------------
revno: 2
committer: root <root@server1.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 16:43:50 +0200
message:
  committing changes in /etc after apt run
  Package changes:
  +fail2ban 0.8.4-3
------------------------------------------------------------
revno: 1
committer: root <root@server1.example.com.example.com>
branch nick: server1.example.com /etc repository
timestamp: Tue 2011-07-12 16:43:39 +0200
message:
  saving uncommitted changes in /etc prior to apt run
root@server1:~#
</pre>
<br/>
Per ripristinare il file <code>/etc/hosts</code> alla versione 3 occorre:
<pre>
# bzr revert --revision 3 /etc/hosts
</pre>
Se vogliamo ripristinare l'intera directory/<code>/etc</code> alla versione 2:
<pre>
# bzr revert --revision 2 /etc
</pre>
== Monitorare i pacchetti installati ==
Possiamo aggiungere a etckeeper anche la lista dei pacchetti installati nel sistema, utilizzando un piccolo [[script]]:
<pre>
# dpkg --get-selections > /etc/package.list
# cp /etc/apt/sources.list /etc/sources.list
# apt-key exportall > /etc/Repo.keys
</pre>
Inserito in [[cron]], questo script creerà una lista aggiornata dei pacchetti installati nel sistema, che sarà poi inserita nel controllo di versione di etckeeper.
<br/>
Potremo ripristinare le modifiche con:
<pre>
# apt-key add /etc/Repo.keys
# cp ~/sources.list /etc/apt/sources.list
# apt-get update
# apt-get install dselect
# dpkg --set-selections < /etc/package.list
# apt-get dselect-upgrade -y
</pre>
{{Autori
|Autore=[[Utente:Ferdybassi|Ferdybassi]]
}}
[[Categoria:Monitoraggio]]
[[Categoria:Backup&restore]]