Hardware: la parte di un computer che puoi prendere a calci

— Jeff Pesis

Rispondi al commento

Migrazioni - Parte 2/4

http://www.stenoweb.it/files/blog/stenoteam_0.jpg Una volta eseguita una installazione standard di Archlinux, proseguiamo con l'installazione LDAP + Samba come abbiamo già imparato a fare, anche se la configurazione di Samba, compresa anche la parte smbldap-tools, la lasciamo per il momento da parte, dal momento che dobbiamo "carpirla" dal vecchio server che andreamo a sostituire. La cosa che ci preme ora è preparare il sistema per il trasferimento dei dati che faremo con rsync. Cosa? Cominciamo subito con il trasferimento dei dati? Certo che si. Dobbiamo guadagnare tempo.

Preparazione al trasferimento

Si potrebbe pensare che il trasferimento dei dati sia l'ultima cosa da fare in una migrazione, invece io parto proprio da qui, dato che il processo dura parecchio, e non posso pensare di farlo all'ultimo passaggio perdendo ore e ore in questa fase. Meglio farlo più volte anche "a caldo" , di volta in volta verranno copiati solo i nuovi file e quelli che avranno subito modifiche dall'ultima copia velocizzando notevolmente il processo.
Per far questo utilizzeremo rsync, un software "figlioccio" di Samba, veramente ben fatto, potente e multipiattaforma che permette di sincronizzare cartelle e file anche attraverso la rete utilizzando una architettura client server.

Nel proseguo chiamaremo archinew il nuovo server e archiold il vecchio. Come al solito questo denota la mia infinita fantasia nello scegliere i nomi :)

Installazione e avvio di rsync

Niente di complicato, lo installiamo su archinew :

sudo pacman -S rsync

e avviamo il servizio :
sudo /etc/rc.d/rsyncd start

Su archiold l'ho già trovato intallato, probabilmente Fedora lo "butta su" di default. Il problema è che è una versione un po' vecchiotta, che, inaccettabile per i nostri scopi, non supporta la copia delle ACL Posix.

Siccome non si trova la versione 3 di rsync per fedora core 3, scarichiamo i sorgenti dal sito e "sporchiamo" la nostra installazione con gli arcinoti :

./configure ; make ; make install

Tutto liscio. la nuova versione viene installata in /usr/local/bin. Per evitare confusioni ho tolto la vecchia versione con un semplice
rpm -e rsync

LDAP Client

rsync ci permette di effettuare la sincronia dei dati preservando i permessi utente dei file e delle cartelle che copia. Questo aspetto è fondamentale. I dati trasferiti e le cartelle create sul nuovo server manterranno tutti i flags relativi a proprietari, gruppi e anche permission ACL Posix.

Perchè questo funzioni devo momentaneamente "agganciare" archinew al server OpenLDAP che gira su archiold, così che esso possa riconoscere utenti e gruppi.

Dunque, per il momento, nella configurazione client LDAP di archinew devo impostare archoiold come server LDAP e controllare che funzioni correttamente.

Script di trasferimento

Per fare la copia creiamo un piccolo script che con rsync si occupa del lavoro sporco. Ecco qui quello che ho usato io che può essere un valido punto di partenza. Lo script và creato su archiold e si chiama syncsamba :

#!/bin/bash
echo "Vuota cestini"
purge
echo "Sincronizza dati condivisione Samba";
/usr/local/bin/rsync -Aarlv --delete /samba/* root@archinew:/samba

echo "Sincronizza dati home directory utenti";

DIR=`ls /home -F | awk '/\/$/ {sub( /\/$/,""); print}'`;

for user in $DIR; do
echo "Sincronizza dati home Utente $user";
/usr/local/bin/rsync -Aarlv --delete /home/$user root@archinew:/home
done


Dopo aver "purgato" (ricordate lo script purge ?) i cestini utente (per non copiare cose inutili) lo script copia la cartella /samba che contiene tutte le condivisioni, e una per una le home degli utenti. Ho scelto di fare così anzichè copiare tutte le home in un sol colpo a causa del parametro --delete che elimina dalla destinazione quello che non esiste nella sorgente. Archlinux ha la malaugurata idea di utilizzare la home anche per altri scopi/servizi (tipo la home di apache o amavis), se non facevo in questo modo le relative cartelle sparivano dal disco.

Gli altri parametri -Aarl fanno sì che vengano mantenuti i permessi (anche quelli estesi), che vengano copiate anche le sottocartelle e che vengano eventualmente ricreati i symlink. Il parametro -v stà per "verbose", in pratica ci mostra l'andamento della copia file per file, e quindi può essere anche tralasciato.

Spero sia superfluo dire che i nomi host archinew e archiold devono essere risolti dal DNS, in caso contrario naturalmente è sufficiente sostituirli con i rispettivi indirizzi IP.

Voglio aggiungere che rsync è dotato di un numero impressionante di parametri e funzionalità, ce ne sono di veramente interessanti, vale la pena approfondire l'argomento.

Problemino password

Lanciando lo script syncsamba appena creato balza subito all'occhio che ogni volta che viene invocato il comando rsync mi viene richiesta la password. La cosa non ci piace per niente (anche se perfettamente giusta dal punto di vista sicurezza), non possiamo pensare di digitare manualmente la password per ognuna della 80 home che copiamo ! Vediamo che possiamo fare.

Siccome sappiamo che rsync utilizza ssh per la copia, rivolgiamo lo sguardo su di esso per scavalcare il problema. Come posso collegarmi con ssh ad un host senza digitare la password ? Semplice (si fà per dire), dobbiamo "farci conoscere" dall'host remoto fornendogli la nostra chiave pubblica. Vediamo come si fà.

Creazione e copia della chiave

Ricordo che stò agendo come root, in quanto devo avere permessi di lettura/scrittura su entrambi i server per copiare i dati. Generiamo la chiave su archiold:

ssh-keygen -t rsa

Alle richieste di password diamo "invio" più volte senza specificare nulla. Questo processo genera due file che corrispondono alla chiave privata (id_rsa) e la chiave pubblica (id_rsa.pub) di archiold.

Ora copiamo la chiave pubblica su archinew con il comando scp in questo modo :

scp ~/.ssh/id_rsa.pub archinew:.ssh/authorized_keys2

In questo modo, da adesso in poi, posso collegarmi con ssh da archiold ad archinew senza digitare la password. Altro piccolo trucchetto ssh molto utile :)

Proviamo digitando da archiold:

ssh archinew

Se avete fatto tutto giusto non vi viene richiesta alcuna password.

Copia dei dati

Ora posso lanciare syncsamba da archiold (o schedularlo con cron) e lasciarlo compiere il suo sporco lavoro. La prima volta sarà un processo lungo, ma successivamente molto più snello dal momento che verranno solo allineate le differenze.

La prossima volta vedremo di copiare le configurazioni e sopratutto il database LDAP con utenti e password.

Byez.

Rispondi

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.