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.