mercoledì 9 gennaio 2008

Installazione di un server per il software TaXiOn

La procedura qui di seguito descrive il processo di installazione di un pc come server LAMP e la successiva installazione e configurazione del software TaXiOn, naturalmente il software può essere installato su una qualsiasi macchina dotata di Apache, Mysql e PHP saltando le fasi 1 e 2.

Fase 1: Installazione del sistema operativo


La procedura che segue descrive l'installazione da zero del sistema operativo Ubuntu 7.10 serve i386 che è stato scelto per la particolare facilità di installazione.

Il sistema operativo può essere scaricato dal sito www.ubuntu.com facendo attenzione a scegliere la versione i386 server oppure direttamente da questo link: ubuntu-7.10-server-i386.iso e successivamente masterizzato su di un CD.


(Notazione: in corsivo sono riportati i comandi da digitare, in grassetto le opzioni da scegliere)

Al boot premere:

F2 ---> Italiano

e quindi scegliere:

Installa su disco rigido


Al momento della configurazione della scheda di rete eseguire:

Configurazione automatica DHCP ---> Annulla ---> continuare ---> Configura la
rete manualmente



inserire ip, netmask, gateway e DNS, infine il nome macchina

nella fase di partizionamento selezionare:

Guidato usa l'intero disco ---> ok ---> si


scegliere l'impostazione di default per l'orologio:

orologio su UTC ---> si



Inserire i dati per l'account principale (nel nostro caso scegliamo "taxion" come nome utente ed una password adeguata)

Nome completo utente: taxion

username: taxion

impostare password

...

alla richiesta delle applicazioni server da installare installselezionare:

LAMP server

OpenSSH Server

alla richiesta impostare password per l'utente root di mysql e segnarsela (questa sarà fondamentale in seguito)

RIAVVIARE

Fase 2: Aggiornamento e configurazione del sistema operativo


connettersi al server con un terminale ssh (da questo punto in poi non è più necessario essere fisicamente al computer server e le operazioni possono essere effettuate da remoto)

Al prompt eseguire:

sudo vim /etc/apt/sources.list


commentare con un carattere di # in cima la linea:

deb cdrom:[Ubuntu-Server 7.10 _Gutsy Gibbon_ - Release i386 (20071016)]/ gutsy main restricted

salvare ed uscire.



Al prompt eseguire:

sudo apt-get update
sudo apt-get upgrade
sudo reboot

Fase 3: Installazione programma TaXiOn


riconnettersi al server via ssh ed al prompt eseguire:

wget http://surfnet.dl.sourceforge.net/sourceforge/taxion/taxion-beta-2.2.tgz
tar zxf taxion-beta-2.2.tgz
mv taxion-beta-2.2 taxion
sudo mv taxion /var/www/
sudo chown -R www-data.www-data /var/www/taxion/
sudo vim /etc/php5/apache2/php.ini


modificare la voce:

register_globals = Off

in:

register_globals = On



sudo /etc/init.d/apache2 restart

mysql -u root -p

(ricordarsi la password scelta per l'utente root di mysql in fase di installazione di ubuntu)


mysql> create database taxion;

Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on taxion.* to 'taxion'@'localhost' identified by 'taxion';

Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit;

Bye



Al prompt digitare:

mysql taxion -u taxion -p < /var/www/taxion/accessi.sql

(viene richiesta la password impostata per l'utente taxion in mysql che nell'esempio è "taxion")

Editare il file di configurazione del programma

sudo vim /var/www/taxion/vars.php


Il programma è adesso funzionante e vi si può accedere andando con un browser all'URL:
http://indirizzo_ip_del_server/taxion/



appare una maschera di inserimento utente e password.


L'account di default è:

utente: admin

password: admin


Per l'insetimento e modifica degli utenti si veda la documentazione del programma.

sabato 5 gennaio 2008

Installazione di un server per la virtualizzazione

Ovvero "How I did it" per gli appassionati di "Young Frankenstein" altrimenti noto come Frankenstein Junior

Allo scopo di virtualizzare due macchine piuttosto vecchie e passare a nuovo hardware ridando vita a sistemi operativi piuttosto attempati e a software che necessitava di macchine più "brillanti" si è acquistato un server HP ProLiant ML 380 G4 dotato di controller RAID, 4 dischi hot swap da 360 GB configurati in un volume RAID 5, 5 GB di RAM e un dat DDS72.

Riepilogo delle operazioni di installazione del sistema operativo e del software vmware dopo le fasi di test.

Installazione del sistema operativo:

Si è utilizzato il CD Ubuntu Dapper 6.06 flight 7 INSTALL

NB: Si è scelta dapper dopo vari test su Breezy perchè rende disponibile il kernel amd64-server risultato più veloce e che già supporta più di 4 Gb di RAM. Gli altri kernel possibili erano amd64-xeon e amd64-generic. Tutti nascono compilati per multiprocessore ed eventualmente si adattano da soli al monoprocessore.

Selezione lingua: Italiana
Tastiera: Italiana

Installazione di tipo server; partizionamento come segue:

Dispositivo Boot Start End Blocks Id System Mount point
/dev/cciss/c0d0p1 * 1 64 514048+ 83 Linux /boot
/dev/cciss/c0d0p2
65 72434 581312025 83 Linux /
/dev/cciss/c0d0p3
72435 72689 2048287+ 82 Linux swap / Solaris
/dev/cciss/c0d0p4
72690 72944 2048287+ 82 Linux swap / Solaris

E' stato usato il software di partizionamento dell'installer procedendo a creare prima una partizione di 500 MB, successivamente a partire dagli ultimi blocchi due partizioni swap da 2 GB, ed infine una partizione con il restante spazio.

NB: Utilizzando il partizionamento automatico si è riscontrato un errore su Grub all'avvio perciò si è scelto di utilizzare una partizione /boot.

NB: Swap non puo' essere più di 2GB. Se si desidera + swap e' necessario creare più partizioni come in questo caso. Eventualmente e' poi possibile parallelizzarle.

Durante l'installazione è stata configurata manualmente (non tramite DHCP) la scheda di rete eth0 (ne sono presenti due) assegnando i seguenti parametri in accordo con la LAN:
  • Indirizzo IP
  • Netmask
  • Gateway
  • DNS
E' stato inoltre inserito il nome macchina ed un utente utente principale vmadmin (nella distribuzione Ubuntu l'utente creato al momento dell'installazione ha i diritti di effettuare sudo).

A fine installazione si è provveduto ad abilitare l'utente root con
sudo passwd root
e tutte le sorgenti di pacchetti che non fossero "backports" editando il file di configurazione
sudo vim /etc/apt/sources.list 
(per i dettagli si veda la sezione Package management della guida ufficiale di Ubuntu 6.06).

E' stato aggiornato il software con
apt-get update
apt-get dist-upgrade
Si sono installati i pacchetti del kernel nuovo con:
apt-get install  linux-headers-2.6.15-25 linux-headers-amd64-server linux-image-amd64-server
e quindi riavviato il server.

NB: fare attenzione che grub carichi di default il kernel giusto, altrimenti modificare il parametro default nel file di configurazione di grub.

Al riavvio si è proceduto ad inserire i moduli necessari per il corretto funzionamento del DAT:
modprobe aic7xxx
modprobe st
echo "engage scsi" > /proc/driver/cciss/cciss0

e si sono aggiunte nel file /etc/modules le righe
aic7xxx
st

si è creato un file in /etc/init.d chiamato engage-scsi di proprietà di root come segue:

#!/bin/sh
#
# engage-scsi
#
# abilita lo scsi, avviato da rc.S.
echo "engage scsi" > /proc/driver/cciss/cciss0

quindi si è creato un link al file nella directory /etc/rc.S dove ci sono i link agli script che devono partire prima dei vari rc.0-rc.1

ln -s /etc/init.d/engage-scsi S65engage-scsi

NB: il riassunto e' che per far funzionare correttamente lo scsi tape devono funzionare correttamente i moduli relativi allo scsi (aic7xxx in questo caso per uno SCSI adaptec ma per altro hardware può essere diverso) e poi del tape (st). Anche in questo caso con Kernel diversi da amd64-server si sono riscontrati problemi all'atto del caricamento dei moduli.

Infine, per permettere le connessioni XDMCP remote, si è modificato il file /etc/X11/wdm/wdm-config
commentando la riga 24:

 23 > # Don't listen for XDMCP
24 > #DisplayManager.requestPort: 0

e riavviato il servizio con
/etc/init.d/wdm restart


Installazione vmware


Al fine di standardizzare ed automatizzare l'installazione di vmware si sono preparati gli script Apt-Install-Dapper.fl7 e POST-apt-installDAPPER disponibili per il download. Si è quindi lanciato lo script Apt-Install-Dapper.fl7 che installa i componenti del Sistema Operativo necessari alla successiva installazione di vmware.
Dopo aver riavviato il server ed effettuato un accesso alla console grafica per consentire la creazione del profilo (utente vmadmin), si è lanciato lo script POST-apt-installDAPPER che crea i collegamenti sul profilo dell'utente vmadmin e pulisce la cache di apt.

Eseguendo l'installazione di vmware server beta3 23869 si incontra un errore nella generazione dei certificati ssl (un file con estensione .key). Cio' è dovuto al fatto che vmware è compilato a 32-bit mentre le librerie sono per applicazioni a 64-bit.
Per far funzionare vmware su un kernel a 64-bit è stato necessario avere a disposizione le seguenti librerie: ia32-libs, libpam0g, libdb2. Le ia32-libs sono librerie per emulare applicazioni a 32-bit su sistemi a 64-bit e sono state installate con il comando (che crea la cartella /lib32 con le librerie a 32-bit per kernel a 64):

apt-get install ia32-libs

per quanto riguarda le libpam0g e le libdb2 invece esse sono state soltanto scaricate e estratte e poi copiate in /lib32

wget http://archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam0g_0.79-3ubuntu14_i386.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/d/db2/libdb2_2.7.7.0-10_i386.deb
dpkg -x libpam0g_0.79-3ubuntu14_i386.deb /
dpkg -x libdb2_2.7.7.0-10_i386.deb /

poi si muove il contenuto della cartella //lib in /lib32 per entrambi i pacchetti omettendo di muovere il contenuto di //usr che contiene la documentazione.

A questo punto si procede con la installzione di vmware.

Per prima cosa è necessario impostare la corretta versione del compilatore in accordo con quello utilizzato per il kernel; nel nostro caso è sufficiente impostare la seguente variabile di ambiente nella shell che sarà utilizzata per la compilazione:

export CC=/usr/bin/gcc-3.4

scompattare i pacchetti di vmware-server

cd vmware-server-distrib
./vmware-install.pl

scompattare i pacchetti di vmware console

cd vmware-console-distrib
./vmware-install.pl

Le scelte di default vanno bene in entrambi i casi, abbiamo scelto di configurare solo la bridged network nella configurazione di rete.

A questo punto VMware è installato correttamente ma non è possibile accedere al server dalle console remote: errore (“Login (username/password) incorrect ”).

Per ovviare al problema è necessario scaricare i files ”pam_unix.so pam_unix_acct.so pam_unix_auth.so pam_unix_passwd.so pam_unix_session.so” dalla versione a 32-bit di debian o ubuntu e metterli in /lib32/security.
editare /etc/pam.d/vmware-authd, cambiare il path di pam_unix_*.so in /lib32/security.
Riavviando il servizio di vmware (/etc/init.d/vmware restart) sarà possibile connettersi dalle console remote.
Non e' possibile installare il pacchetto api di vmware su kernel a 64-bit ma questo non è ncessario.

Versioni successive di VMware


Il server è stato in seguito aggiornato alle versioni più nuove di vmware fino ad arrivare alla versione 1.0.1 Build 29996 che risulta molto stabile e prestante. Per l'installazione delle versioni successive si è proceduto alla disinstallazione della precedente ed alla installazione della nuova, utilizzando sempre lo stesso metodo, non si sono mai trovati problemi. E' possibile che installando direttamente l'ultima versione indicata alcuni passaggi particolari come la modifica del metodo di autenticazione pam non siano necessari in quanto adesso la release 6.06 di Ubuntu risulta supportata da VMware

clonazione di un server fisico su VMware

Descrizione di come far diventare una immagine ghost una macchina virtuale

Importazione di una immagine su una VM


E' possibile utilizzare una immagine di 1 pc con SO windows ed importarla su una macchina virtuale!
Tutto ciò senza ostacoli di variazione hardware grazie ad un software chiamato P2V che adatta la struttura del sistema operativo salvato in una immagine del disco all'hrdaware virtuale (compresa la configurazione scsi virtuale della VM).

Partiamo con un ghost (o altro sistema di imaging del disco) della macchina fisica che si vuole clonare.
Si crea un disco di avvio di ghost che ci permetta di recuperare l'immagine dalla rete. Le macchine virtuali di vmware simulano una scheda di rete compatibile con le amd pcnet family se si vuole poter accesere alla rete tramite un disco di boot e quindi necessario prevedere tali drivers. Il software Ghost prevede la creazione di floppy di boot che contengono PC Dos ed i driver necessari:
"amd pcnet family"

Si crea una macchina virtuale con i parametri piu' adeguati al SO che verrà installato.
Si avvia la VM con il disco di ghost e si ripristina sul disco della VM l'immagine del disco o della partizione originali.

A questo punto PRIMA DI AVVIARE LA VM si utilizza il software P2V assistant che è possibile acquistare dal sito di vmware
Per farlo è stato necessario condividere l'immagine del disco virtuale sul server linux in maniera che potesse essere vista dal programma P2V assistant installato su SO windows.

Si e' proceduto nlle seguenti fasi.
1) lanciato una sessione di Ubuntu da Live CD sul server linux

2) montato il disco del server
cd /media
mkdir disco
mount -t ext3 /dev/cciss0/c0d0p2 /media/disco

3) installato samba per la condivisione ( o con apt-get prendendo i 2 pacchetti samba e samba-common o lanciando da interfaccia grafica una condivisione che automaticamente avvia la procedura di scarico ed installazione di samba)

4) Si è modificato il file
vim /etc/samba/smb.conf
in pratica si disabilita tutto quello che può dar noia printing, etc. e si aggiunge la convisione come segue:
 [nome_condivisione]
path = /media/disco/var/lib/vmware
available = yes
browseable = yes
public = yes
writable = yes
guest ok = yes

5) si è lanciato il programma P2V sul file .vdmx della macchina virtuale e, dopo aver scelto di convertire la macchina fisica in una di tipo GSX, si è atteso il risultato della elaborazione.

6) se tutto è ok. si arresta la sessione live, si tolgono i supporti di boot (floppy), e si riavvia il server.

Adesso non resta che spengere la macchina originale che si è clonato e tirare su quella virtuale!

P.S. non dimenticare di installare i VM Tools!

Configurazione di dischi USB da caricare al boot

E' spesso molto comodo avere dischi USB (nel mio caso per lo storage dei backup) che si montano al boot automaticamente.

I problemi riscontrati sono stati i seguenti:

  1. un device USB non sempre ottiene lo stesso nome di device; potrebbe cambiare se viene inserito un nuovo dispositivo.
  2. i moduli di gestione dell'USB in genere vengono caricati DOPO l'esecuzione del caricamento dei filesystem.

Per ovviare al primo problema ho creato una etichetta sulla partizione da montare così da poter identificare il dispositivo tramite la LABEL e non il suo device name.
Per ovviare in modo semplice al secondo ho configurato fstab in modo che non carichi automaticamente le partizioni al boot ed ho modificato lo script /etc/rc.local in modo che il montaggio venga fatto appena l'intero sistema è partito.

vediamo in dettaglio le operazioni:
Sistema utilizzato: Ubuntu Feisty Fawn 7.04 AMD-64 server

Precisazione: il sistema descritto prevede che non sia presente interfaccia grafica quale gnome o KDE che implementano sistemi di automount che possono interferire con la procedura


Collegare il disco USB ed accenderlo

elencare i device e le partizioni con il comando:
 sudo fdisk -l

Device Boot Start End Blocks Id System
/dev/sda1 1 60801 488384001 b W95 FAT32

nel caso in esempio il disco USB viene visto come /dev/sda e contiene una partizione FAT32

OK, per prima cosa voglio un filesystem decente!! e scelgo ext3; quindi devo ricreare la partizione e riformattarla

 sudo fdisk /dev/sda

uso prima il comando "d" per eliminare la partizione 1; quindi il comando "n" per crearne una nuova
alla fine con il comando "w" si scrivono effettivamente le modifiche.

ora tocca alla formattazione:

 sudo mkfs -t ext3 /dev/sda1

Quindi creiamo una etichetta per la partizione:

 sudo e2label /dev/sda1 backup

Nell'esempio la partizione sda1 viene nominata backup (perché nel mio caso il disco verrà usato per i backup)

Ora occorre modificare il file /etc/fstab in modo che utilizzi l'etichetta appena creata per riconoscere il dispositivo ed il punto di mount:

 sudo vim /etc/fstab

aggiungere una linea come questa:

 LABEL=backup    /media/backup   ext3    defaults,noauto 0 0

dove "backup" è il nome della etichetta e /media/backup è il punto in cui verrà montata

Adesso creiamo il punto di munt:

sudo mkdir /media/backup

Guardando bene la linea aggiunta in /etc/fstab si nota che sono stati inseriti i parametri "noauto" e "0 0"; questo perché non si vuole che il filesystem venga montato da fstab al boot e non si vuole neanche che fsck lo controlli all'avvio (questo perché in quasi tutti i sistemi tale operazione blocca il boot in quanto la partizione non è ancora visibile per la mancanza dei moduli USB)

Infine si edita il file /etc/rc.local inserendo questa linea alla fine (prima di exit 0)

# monta i filesystem per il backup
/bin/mount /media/backup


Ed il gioco è fatto

Riferimenti: Creating an ext3 File System

Installazione Bacula backup server

log delle operazioni svolte per l'installazione di Bacula

Installazione pacchetti:


E' stato eseguito apt-get con il seguente comando in modo da installare esplicitamente tutte le dipendenze e sapere esattamente quali pacchetti vengono aggiunti (un unica riga):

apt-get install bacula-console bacula-director-sqlite bacula-fd bacula-sd mt-st mtx  bacula-common bacula-director-common exim4 exim4-base exim4-config exim4-daemon-light libpcre3 libsqlite0 sqlite

Output:

Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso... Fatto
Pacchetti suggeriti:
dds2tar scsitools sg3-utils mail-reader eximon4 exim4-doc-html
exim4-doc-info gnutls-bin sqlite-doc
I seguenti pacchetti NUOVI (NEW) saranno installati:
bacula-common bacula-console bacula-director-common bacula-director-sqlite
bacula-fd bacula-sd exim4 exim4-base exim4-config exim4-daemon-light
libpcre3 libsqlite0 mt-st mtx sqlite
0 aggiornati, 15 installati, 0 da rimuovere e 0 non aggiornati.

Durante l'installazione di exim4 si è scelta l'opzione:
Solo consegna locale

Sono stati fermati i demoni:

/etc/init.d/bacula-director stop
/etc/init.d/bacula-fd stop
/etc/init.d/bacula-sd stop

Si è poi modificato il file
vim /etc/bacula/bacula-sd.conf
decommentando ed editando la sesione DDS come segue:

Device {
Name = DDS72 #
Media Type = DDS72
Archive Device = /dev/nst0
AutomaticMount = yes; # when device opened, read it
AlwaysOpen = yes;
RemovableMedia = yes;
RandomAccess = no;
## Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
## Changer Device = /dev/sg0
## AutoChanger = yes
## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
}


E' statolanciato il tool
btape /dev/nst0
ed effettuato il test con pieno successo

Sono stati installati gli scsitools con apt-get
  apt-get install scsitools

Output:

Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso... Fatto
Pacchetti raccomandati:
tk8.4 wish
I seguenti pacchetti NUOVI (NEW) saranno installati:
scsitools
0 aggiornati, 1 installati, 0 da rimuovere e 0 non aggiornati
.

gestione delle password



Invece di inserire la password in chiaro nei file di configurazione di bacula si è preferito creare l'md5sum della password e quindi inserirla nei file, in tal modo in caso qualcuno riesca a leggere tali file non potrà risalire alla password di effettiva (il processo md5sum non è invertibile poiché è una funzione univoca), il vantaggio sta però nel fatto che il personale del CED non necessita di ricordare una nuova password. Per generare la password criptata si è usato il comando:

md5sum -

che attende un input da tastiera, un invio ed un +D