Installazione di OcsInventory

Transcript

Installazione di OcsInventory
Ocs Inventory NG su MacOSX
Cosa è sta roba ?
Lavoro come amministratore di sistema e di rete, fortunatamente le reti sono di altri.
Più di una volta mi è capitato di trovare aziende che hanno la necessità di effettuare uno screening di tutto quello che c'è nella loro
rete.
Ebbene, girando in macchina ho sempre un paio di pc scassoni sui quali installo al volo linux e faccio quello che devo fare.
Pero'..siccome ho lavorato per un po' in uno studio di grafica pubblicitaria dove c'erano solo mac, ho pensato...magari sarebbe bello
mettere sto coso su un mac,senza scassoni tra le sfere..zompo sul sito degli amici e....arrrghhh non esiste una versione per
macosx ??? Ma come ???
Altolà, mi dico io, c'è da scrivere un tutorial per TEVAC, c'è che è un po' un periodo di stanca, c'è pure un nano in palio. Vai con la
sfida.
OcsInventory NG ( http://www.ocsinventory-ng.org) è un pacchetto, sviluppato da un team francese omonimo, che consente di
inventariare tutti gli apparati della rete, siano essi PC, Router, Switch, Stampanti di rete e tutto quello insomma che ha un cavo di rete.
OcsInventory NG inoltre consente di analizzare approfonditamente il software installato sui computer appartenenti ad una o più reti
(con controllo quindi sui pacchetti e tutto l'hardware installato),
E ...dulcis in fundo ( ma non è un dolce ) il pacchetto è anche in grado di effettuare il deployment di pacchetti, ossia l'installazione
remota ( ma non ne parleremo qui ).
Ovviamente è possibile analizzare macchine con a bordo il nostro amato MacOSX, ma anche tutte le varianti di unix che conoscete.
In figura, il mio Mac, inventariato
Ocs inventory è composto da 2 parti, una parte server e una parte agent
La parte server di Ocs Inventory è strutturata a 3 tier (ossia è spezzabile in 3 pezzi).
Un pezzo è il communication server, che scambia i dati con l'agent (installato su ogni apparato).
Il communcation server concentra i dati sulla macchina e li inserisce in un database
Un altro pezzo è il deployment server,ossia una macchina che può avere un repository di files che si possono installare nella propria
rete.
L'ultimo pezzo è l'application server, ossia l'interfacccia di Management di questo prodotto.
Sono tre ? si.
Vedi figura per chiarimenti
Il prodotto è un'accoppiata di apache, perl, php e mysql.
L'agent, disponibile anche per Macosx, è un pacchetto che analizza la macchina e invia i dati al server.
Su macchine windows è disponibile sotto forma di agent stand-alone, o in formato services. (ovviamente la parte win non la cureremo,
ma è d'obbligo segnalare che il prodotto si integra perfettamente con Active Directory e Gpo, documentazione sul sito ufficiale)
Ufficialmente, come ho in scritto poco sopra, la parte server di OcsInventory NG NON funziona su MacOSX.
Siccome spesso e volentieri vivo in una realtà dove l'interoperabilità sembra una chimera, mi sono messo qui e oggi vi racconto come
ho fatto a far funzionare questo prodotto sul mio mac.
Ecco che qui entriamo noi, con il nostro tutorial.
**** Attenzione il tutorial è stato scritto e testato su piattaforma intel, tuttavia non vedo problemi ad effettuare la stessa installazione su
piattaforma powerpc ****
Requisiti mentali:
Terminale
Concetti di rete
Familiarità con ambienti *nix
Familiarità con installazione moduli perl (via cpan o darwinports)
Developer Tools (make, perl)
Requisiti software:
Il prodotto ha come requisiti:
- MySQL versione 4.1 o +
- PERL 5.6 o+
- Apache versione 1.3.33 o +
- PHP 4.3.2 +
- Un sacco di moduli di perl.
Analisi del problema:
Al primo sguardo potremmo dire che OCS Inventory ng è un prodotto basato in architettura AMP (Apache, Mysql,Php) e che quindi con
una liscia installazione di MAMP possa funzionare, tuttavia non è così.
Il validissimo prodotto (MAMP) ha purtroppo gravi problem di compatibilità con alcuni moduli perl, inoltre non viene distribuito apache
con mod_perl configurato.
Quindi dobbiamo ricorrere al metodo Tafazzi (vedi figura)
Ossia,
- Utilizzo di apache all'interno di macosx
- Installazione di Php Manuale
- Installazione di Mysql Manuale
- Smandruppamenti di Mysql e PHP
- Compilazione dei moduli di perl.
Peccato per MAMP
beh, MAMP è stra-utilizzato per ragioni di comodità, certo è che dovremo andare ad effettuare delle modifiche su alcuni file, il
pacchetto però è separato dal sistema operativo quindi garantisce di non andare ad intaccare alcun file.
Problema cruciale: MAMP non ha mod_perl quindi siamo costretti al metodo tafazzoso.
Sto però testando la possibilità di farlo funzionare con XAAMP per macosx, che invece supporta perl, in caso andremo ad integrare
questa breve (???) guida.
Realizzazione del progetto
Fase 1: Creazione ambiente appropriato
Alcune note "tecniche", quando il carattere è in stile "Terminale", significa che bisogna digitare queste righe in terminale.( e in questa
riga, si riassumono tanti concetti della vita).
Va da sè che ad ogni fine riga ci sia un "invio".
Apriamo terminale, o una console e digitiamo:
cd /etc/httpd/
poi digitiamo
sudo mkdir conf.d
se ci viene chiesta la password inseriamola, e a questo punto digitiamo
sudo chmod 755 conf.d
Cosa abbiamo fatto ?
Abbiamo creato la possibilità per il sistema di aggiungere file di configurazione ad apache.
Cioè abbiamo creato una cartella che il server web leggerà per caricare eventuali altri file di configurazione, che vogliamo tenere
separati dal classico httpd.conf
Fase 2: Modifiche a httpd.conf
adesso apriamo con diritti di root il file httpd.conf (io uso vi), sempre da Terminale digitiamo
sudo vi httpd.conf
innanzitutto andiamo a commentare php (se abilitato) di sistema, quindi
Commentiamo, mettendo dei cancelletti in questo modo le linee 240 e 284.
Su vi, sarà sufficiente premere il tasto i (di insert) e inserire le modifiche, poi schiacciare "esc"
#LoadModule phnormale_module
libexec/httpd/libphnormale.so
#AddModule mod_phnormale.c
e decommentiamo, togliendo i cancelletti la 239 e la 283
Su vi, sarà sufficiente premere una x, sul cancelletto
LoadModule perl_module
AddModule mod_perl.c
libexec/httpd/libperl.so
poi andiamo infondo al file, scorrendo
e aggiungiamo in fondo al file la seguente riga
Su vi, sarà sufficiente premere il tasto i (di insert), aggiungere la linea, poi schiacchiare "esc"
Include /etc/httpd/conf.d/
salviamo e usciamo.
Su vi, si digita
:wq!
Molto bene.
Cosa abbiamo fatto?
Abbiamo disabilitato il php di sistema, perchè ha dei problemi a funzionare con questa versione del pacchetto. Inoltre abbiamo
specificato che vogliamo attivare il mod_perl, ossia un modulo che interfaccia direttamente degli script in perl con il server web.
Infine abbiamo aggiunto una riga di Include che specifica dove ci sono altri file di configurazione da leggere (questa riga è in simbiosi
con la fase 1)
Fase 3: Download e installazione di Mysql + smandruppamenti
Ci scarichiamo dal sito di Mysql, l'ultima versione di mysql per Mac in formato pkg
http://dev.mysql.com/downloads/mysql/5.0.html#macosx
come in figura, sono solo 60mega, in fondo. :D
installiamo Mysql, via pkg.
Io a questo punto utilizzo molto MysqlAdministrator, che è un pacchetto che si può scaricare da qui
http://dev.mysql.com/downloads/gui-tools/5.0.html
Modifiche a Mysql:
Apriamo Terminale e digitiamo
cd /usr/local/mysql/lib
sudo mkdir mysql
Se viene richiesta la password,digitarla e premere invio
sudo cp ../* .
Dobbiamo effettuare questa operazione per un bug che sbaglia i percorsi delle librerie...come dire, lo freghiamo di brutto.
Cosa abbiamo fatto?
Abbiamo installato una versione aggiornata di Mysql, e abbiamo copiato le librerie di mysql, in un'altra directory perchè un modulo di
perl ha un bug nella gestione dei percorsi.
Fase 4: Download di Ocsinventory-ng
Evviva, potete andare a cenare. Oppure continuare.
A sto punto ci scarichiamo il prodotto OCS, ovviamente la versione per linux
http://prdownloads.sourceforge.net/ocsinventory/OCSNG_LINUX_SERVER_1.01.tar.gz?download
Il pacchetto è in formato tar.gz
Decomprimiamo il pacchetto di OCS, anche sulla scrivania e a questo punto dobbiamo modificare lo script setup.sh
Per chi ha un po' di conoscenza di bash, questo è uno script abbastanza semplice, andiamo a vedere.
Fase 5: Correzione di setup.sh
Lo script setup.sh si preoccupa di andare a verificare se il sistema è in grado di supportare il prodotto, ed effettua alcune modifiche ai
file di apache, inoltre installa l'administration console e il communication server.
Lo modifichiamo con un editor di testo un po' avanzato, almeno con la sintassi colorata: io propendo per smultron, che è pure
opensource ,oppure textwrangler, oppure pico, oppure vi,o quello che volete.
Andiamo a modificare le linee 91 e 92 dove viene specificato mysql.
Ovviamente Mysql non esiste nel path principale di sistema, ma il suo binario è in una cartella diversa cioè /usr/local/mysql/, quindi
andiamo a specificarlo come in figura.
A questo punto rimane da commentare solamente altre righe, che vanno a modificare il logrotate, che a noi non interessa.
Commentiamo quindi in stile bash ( con un cancelletto ) le righe dalla 795 alla 818 come in figura.
salviamo e chiudiamo setup.sh
Fase 6: Compilazione moduli perl
A questo punto possiamo iniziare a compilare i moduli di perl che ci interessano:
Anche qui ci sono 2 strade possibili:
- la prima è utilizzare il cpan, ossia utilizzare il servizio standard che perl offre per l'installazione dei propri moduli
- la seconda è utilizzare un servizio già pacchettizzato (darwinports,fink etc.)
io ho adottato la prima soluzione.
spieghiamo:
cpan è una utility che consente di installare i moduli di perl, essenzialmente si connette ad un repository di moduli, prende la versione
più aggiornata di un modulo, la scarica, la compila e la installa.
Noi dobbiamo installare un po' di moduli.
Ad eventuali domande di pacchetti che richiedono dipendenze rispondiamo di sì, oppure premiamo invio, su questi pacchetti non
abbiamo bisogno di condizioni speciali.
Nota su darwinports,fink e varie:
non ho scelto questo modo, perchè non sono sicuro che questi pacchetti si integrino con il perl di sistema, anzi, spesso creano
in /opt/local/ le proprie versioni di perl, inoltre almeno un modulo necessita di compilazione manuale.
Andiamo quindi ad installare in questo modo:
-Apriamo Terminale
Se avete già utilizzato cpan, non dovrebbero esserci problemi, altrimenti il sistema di cpan, potrebbe farvi alcune domande, rispondete
alle domande che vi vengono poste, per il setup iniziale.
digitiamo
sudo cpan -i Compress::Zlib
se il pacchetto non dà errori, procediamo con
sudo cpan -i DBI
se il pacchetto non dà errori, procediamo con
sudo cpan -i Net::IP
se il pacchetto non dà errori, procediamo con
sudo cpan -i Apache::DBI
se il pacchetto non dà errori, procediamo con
sudo cpan -i XML::Simple
XML chiederà di installare anche XML::Namespaces, XML::Sax, XML::Sax-Expat, XML::Parser
bene, siamo a metà del lavoro.
Adesso arriva la parte difficile, sono 2 moduli un po' ostici, uno è SOAP::Lite, mentre l'altro è DBD::Mysql
iniziamo da SOAP::Lite
sudo cpan -i SOAP::Lite
Il sistema lavorerà per un po', se va tutto bene,meglio, è facile però che il sistema si fermi sul make-test perchè trova alcune
incongruenze.
Per risolvere la cosa, forziamo un po' il sistema.
Digitiamo
sudo su
inseriamo la nostra password
**** State lavorando come root quindi occhio a cosa fate ***
Ci spostiamo nella cartella /var/root/.cpan/build/
cd /var/root/.cpan/build/
cerchiamo una cartella che si chiamerà SOAP-Lite-x.xx ed entriamo
cd SOAP-Lite*
a questo punto diamo un
make
seguito da
make install
Non dovrebbero esserci errori, quindi digitiamo
exit
Fase 7: Installazione di DBD::mysql
Io a questo punto andrei a dormire.
Comunque vediamo l'ostacolo più duro, DBD::mysql
Scarichiamo manualmente il modulo da qui
http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.004.tar.gz
torniamo su terminale e digitiamo
sudo su
inseriamo la nostra password
**** State lavorando come root quindi occhio a cosa fate ***
Ci spostiamo nella cartella /var/root/.cpan/build/
cd /var/root/.cpan/build/
ci copiamo dalla scrivania il file
cp /Users/<vostrousername>/Desktop/DBD-mysql-4.004.tar.gz .
a questo punto decomprimiamo
tar fxvz DBD-mysql-4.004.tar.gz
cerchiamo una cartella che si chiamerà DBD-mysql-x.xx ed entriamo
cd DBD-mysql*
capiamo cosa stiamo facendo:
stiamo configurando a mano il pacchetto, andando a specificare dove si trovano le librerie di mysql, che cpan cercherebbe da altre
parti.
digitiamo quindi
perl MakeFile.PL --mysql_config=/usr/local/mysql/bin/mysql_config
seguito da
make
a questo punto effettuiamo un bel
make test
Fase 8 : Possibili errori in fase di compilazione di DBD::mysql
nel dare make test, gli errori comuni sono 2:
- make test non trova il socket di mysql
- make test ha problemi di connessione al socket, per password di root pre-impostate (allora mi state prendendo in giro e una
installazione di mysql c'era già)
* Risoluzione a "non trova il socket di mysql" , errore Can't connect to local MySQL server through socket
'/tmp/mysql.sock'
un po' incasinato da risolvere, per un sacco di problemi. Allora, io ho risolto così.
Innanzitutto, il file di sock, è un file che utilizzano sia php che perl che altri programmi per collegarsi all'istanza del database, quindi una
sorta di "device di database", il sock ci dice che il pacchetto sta funzionando ed è attivo e possiamo connetterci a lui tramite questo file.
dal 10.4 c'è un po' di casino sul "DOVE deve stare sto cavolo di mysql.sock" ?
Alcuni l'hanno sempre visto in /var/mysql/mysql.sock , altri sostengono che debba stare in /tmp/mysql.sock
Io sono di derivazione *nix, quindi l'ho messo al suo posto ossia in /var/mysql/mysql.sock, poi, per non saper nè leggere nè scrivere ho
inserito un bel soft-link tra i due.
C'è anche un articolo di Tevac su questo problema:
http://www.tevac.com/article.php/2006012513085364
cd /etc/
sudo vi my.cnf
e inserisco in my.cnf
[mysqld]
socket=/var/mysql/mysql.sock
salvo ed esco
a questo punto
sudo mkdir /var/mysql/
chmod 755 /var/mysql/
a sto punto abbiamo detto a mysql, che il suo socket è in /var/mysql/. Questo serve per OCS, però non possiamo scontentare nessuno
in fatto di socket, quindi andiamo nella cartella /tmp
riavviamo mysql, io utilizzo MySQL Administrator
cd /tmp
sudo ln -s /var/mysql/mysql.sock mysql.sock
* Risoluzione a "ha problemi di connesione"
make test vuole che ci sia un utente root senza password, grazie.
Quindi provvediamo a resettare temporaneamente la pwd di root su mysql, io uso MySQL Administrator
Se il make test passa senza problemi potete dare un bel
make install
se il make non dovesse andare a buon fine, segnate l'errore e segnalatemelo.
se invece va tutto a buon fine dovremmo esserci, da adesso in poi la strada è decisamente in discesa.
digitiamo
exit
Fase 9 : Installazione del pacchetto:
Sempre da terminale digitiamo
cd ~/Desktop/OCS*
ed ora facciamo partire il famoso setup.sh che abbiamo modificato inizialmente
potrebbe chiedervi dove si trova il binario di apache digitate
/usr/sbin/httpd
potrebbe chiedervi dove si trova il file di configurazione di apache digitate
/etc/httpd/httpd.conf
quando vi verrà richiesto quale utente utilizza, digitate www, e per il gruppo digitate www
Se vi chiede dove si trova l'include rispondete digitando
/etc/httpd/conf.d/
A questo punto lo script controlla se mancano moduli perl, se si ferma annotate il pacchetto che manca ed installatelo sempre nella
solita modalità
sudo cpan -i <nomemodulo>
Alle domande rispondiamo sempre yes, quando ci viene chiesta la DocumentRoot, digitiamo
/Library/WebServer/Documents
e dovreste esserci, viene richiesto un riavvio di apache.
A questo punto, installiamo il pacchetto php che Marc ci ha preparato gentilmente
http://www2.entropy.ch/download/entropy-php-5.2.2-1.tar.gz
fermiamo Apache, fermiamo mysql, riavviamo il tutto
Fase 10: Primo pezzo di console amministrativa
Apriamo Safari e digitiamo
http://localhost/ocsreports/
ed iniziamo la configurazione del servizio.
***Ricordatevi di rimettere la password a root nelle utenze di mysql***
Inseriamo nome utente e password
Il sistema genera le tabelle, premiamo invia.
** Possibili Errori
non trova /var/mysql/mysql.sock
verificare che esista il socket, in caso verificare alla voce "Risoluzione a "non trova il socket di mysql""
non ha i permessi per entrare sul socket
verificare i permessi di /var/mysql/mysql.sock
Ed ecco la nostra Console di Amministrazione ( user: admin pass: admin )
Qui vi rimando alla documentazione sul sito ufficiale del prodotto
Fase 11 : Primo inventario
Adesso ci installiamo un agent per MACOSX
ringraziamo codejanitor, che ha scritto un agent per macosx, e lo ha pacchettizzato.
Questo agent funziona solo con 10.3 e superiori.
http://codejanitor.com/wp/apps/ocs-mac-agent/
Installiamo il pkg come sempre e terminata l'installazione, ci spostiamo con terminale nella cartella /etc/ocsinventory-client/
cd /etc/ocsinventory-client/
a questo punto digitiamo
sudo vi ocsinv.conf
e modifichiamo il file alla riga OCSFSERVER, andando a sostituire ocsinventory-ng con l'indirizzo ip o il nome della macchina che ha
installato il server nel nostro caso, potremmo anche scrivere così
<OCSFSERVER>localhost</OCSFSERVER>
oppure
<OCSFSERVER>192.168.0.1</OCSFSERVER>
o cmq l'indirizzo ip del server.
il pacchetto va ad inserire Ocsinventory negli startupagent, quindi all'avvio di un mac, verrà fatto partire il programma ( un oscript in
php) programma che si trova in /usr/local/sbin/
noi lo forziamo per verificare il funzionamento del pacchetto quindi da terminale digitiamo
sudo php /usr/local/sbin/ocs_mac_agent.php
L'agent deve dare un messaggio 200, seguito dall'inventario della macchina.
***
Possibili Errori
il server da un 500
verificare /var/log/httpd/error.log
Probabilmente è un problema di DBI , o DBD
consultarmi o GIYF
il server da problemi di permessi
verificare di aver lanciato lo script con sudo.
Fase 12: Risultati
Se invece va tutto bene:
1) battevi una pacca sulla spalla
2) digitate http://localhost/ocsreports e vederete inventariato il vostro Mac
Ahr.
Appendice:
Altri approcci:
Ci sono ovviamente altri approcci alla situazione.
Potete infatti scaricare mysql da entropy, oppure una versione pre-pacchettizata.
L'essenziale da ricordare è questo.
* Ci vuole Apache con mod_perl installato, oppure ci si compila mod_perl (ci vogliono i sorgenti di apache)
* Ci vuole Mysql, con la cartella "include", per la compilazione corretta di DBD::mysql
* Ci vuole Php, possibilmente quello di entropy.
Debug:
i file da tenere d'occhio in caso di problemi sono:
/var/log/httpd/error.log
/var/log/ocsinventory-ng/ocsinventory-ng.log
Ringraziamenti:
Scrivere queste righe è costato tempo e fatica.
Non vi dico poi, prima far funzionare la cosa, che non è documentata da nessuna parte, poi ri-pulire, e poi documentare come si è fatto
(non ho un esercito di mac dove effettuare i test)
Se qualcosa va storto, sentitevi liberi di scrivermi.
Ringrazio anche mia moglie, che porta in grembo Sofia, una nuova mac-lover e che ha pazientemente sopportato il sottoscritto in fase
di elaborazione.
Ringrazio tevac, perchè la conoscenza passa anche da qui.