Ricerca in FOLBlog

[SdSM] L’Hydra

 Scritto da alle 10:28 del 01/11/2009  Aggiungi commenti
Nov 012009
 
closeQuesto articolo è stato pubblicato 7 anni 11 mesi 22 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.

Hydra

Altro giorno, altro casino. Allora, ho gia’ descritto alla nausea il mega- mastodontico- doppio cluster che usiamo per processare la posta. Adesso abbiamo deciso che e’ il momento di aggiornarlo. In particolare vogliamo aggiungere un secondo antivirus al primo, aggiungere il famigerato controllo reputation based ed altre cosine varie. Ma soprattutto, vogliamo passare i server da Fedora 5 a qualche cosa di meno volubile ed un pelo piu’ stabile. Tipo CentOs.

Il che significa che mi aspetta la reinstallazione di tutto l’ambaradam di 32 server nel prossimo futuro.

Il tipo che aveva installato il tutto (quello che tirava le tastiere dalla finestra e che ci ha lasciato di colpo), ha lasciato un po’ di documentazione sparsa, ma non e’ che vi sia molto da leggere, in particolare i vari “dettagli” sul come e perche’ installare le cose sono molto nebulosi. Ed anche alcune delle sue scelte non sono proprio allineate con le mie. In particolare ritengo l’uso di daemon tools per la gestione dei servizi in vece del normale sistema di processi una gran rottura. Che finche’ funziona va tutto bene, ma a me e’ gia’ capitato che uno dei processi si incatasti e daemon tool si incatasta pure lui e l’unica e’ un bel riavvio.

In ogni caso, dato che voglio rifare il tutto, usare versioni aggiornate dei vari software eccetera eccetera, ho deciso di fare le cose per bene, quindi sono qui’ occupato a mettere insieme un mega Kick-start file sul nostro server di installazione remota in modo che con un colpo solo mi installi l’intero server con tutto il software necessario pronto al lavoro. E poi aggiungere un piccolo, rapido e crudele script di autoconfigurazione che finisca il lavoro aggiungendo tutti i dettagli necessari, in modo che in una mezz’oretta mi ritrovo con un server pronto al funzionamento, invece di perdere due giorni per cercare ed installare tutti i pezzi che mi servono.

La destinazione e’ fissa, la strada e’ segnata, l’unico problema e’ che il cammino e’ una barbosa ripetizione di: installa, vedi che cosa manca, aggiungi al kickstart, modifica lo script di configurazione, reinstall, risciacqua, ripeti.

Mentre sono qui’ che mi delizio guardando l’ennesima reinstallazione della macchina virtuale che non trova un qualche rpm, A si appropinqua.

Non ho ancora presentato A. Allora, lui e’ un Network Administrator, cioe’ si occupa per lo piu’ di mettere insieme switch, router e roba simile e farli parlare tra di loro e con il resto dell’universo noto (e ignoto). Si occupa anche di alcuni firewall e di mantenere il nostro sistema di monitoring basato su Nagios.

IO – (segnandomi quali rpm mi servono) Che ti serve?
A – Ho un problemino con il backup dei router di un cliente.
IO – Che problema?
A – Allora, tu conosci vero il nostro database di configurazione?

Il database di configurazione e’ l’ennesimo accrocchio in php scritto da una tipa (si’ era donna) tempo addietro. E’ una mostruosita’ che mi ricorda l’Idra. Purtroppo, H era anche quello che si occupava di quell’arnese e quindi temo che, dopo avere ereditato il mailscan, sono in pista per ereditarmi anche questo di accrocchio.

IO – Si’, lo conosco… che c’entra quel coso?
A – Allora, tempo addietro con H avevamo fatto un affare che prendeva gli indirizzi ip dei router dal database e preparava uno script per fare il backup via tftp dei router direttamente. In modo che c’era da mantenere un solo database invece che due. Solo che, per qualche motivo, ci sono alcuni routers che non entrano in quello script. Ed io devo aggiungerli a mano ogni volta.
IO – Interessante.
A – E quindi mi chiedevo, se tu non potessi spendere dieci minuti guardando perche’ quei router non si trovano nello script.
IO – Che routers? Dove sta lo script? Come si crea?

A fornisce tutti i dati e, dopo essermi tappato il naso, mi metto a guardare anche questo problema.

Allora, i routers sono inseriti nel database di configurazione, che ha una struttura multi-livello. Ci sono “oggetti” che hanno “proprieta’”. Ed ogni “oggetto” puo’ essere in relazione con uno o molti altri “oggetti”, il quale puo’ essere a sua volta in relazione con altri “oggetti”. E cosi’ via, ad libitum.

Va bene cominciamo dall’interfaccia. Guardo uno dei router che sono nello script e guardo come e’ definito. Allora, una delle “proprieta’” e’ “backup” con valore “tftp”. Ok. Poi c’e’ un “oggetto” collegato che si chiama “interfaccia” ed ha l’indirizzo IP come una delle proprieta’. Ok. Facile.

Adesso vediamo uno dei famosi routers che nello script non c’e’.

E non ci trovo assolutamente niente di anormale. Esattamente come l’altro ha una proprieta’ “backup”, con lo stesso valore, ha un oggetto collegato… ummmm… pare tutto ok. Almeno, dal punto di vista dell’utente, e’ tutto ok. Adesso si tratta di andare a vedere come viene creato questo script.

Scovo lo script di generazione dello script (sic) nei meandri del database server (si’, quello in cluster-che-non-e’-un-cluster e che io ho iniziato a sostituire), ok, banale script in perl che fa una query… mooooomento… query???


select parent.name, object.name, p.value
from object
inner join property on property.object_id=object.id
inner join relation as rp on object.id=rp.object2 and rp.type='eigendom'
inner join object as parent on rp.object1=parent.id
inner join relation as ri on ri.object1=object.id and ri.type='interface'
inner join object as interface on ri.object2=interface.id
inner join property as p on p.object_id=interface.id
where property.value='tftp' and object.active=1
and p.value not like '192.168.%' and p.value not like '10.%'
and p.value not like '172.16.%' and p.value not like '172.17.%'
and p.value not like '172.18.%' and p.value not like '172.19.%'
and p.value not like '172.20.%' and p.value not like '172.21.%'
and p.value not like '172.22.%' and p.value not like '172.23.%'
and p.value not like '172.24.%' and p.value not like '172.25.%'
and p.value not like '172.26.%' and p.value not like '172.27.%'
and p.value not like '172.28.%' and p.value not like '172.29.%'
and p.value not like '172.30.%' and p.value not like '172.31.%'
and p.value not like ''
order by parent.name, object.name, p.value;

Questa non e’ una query! Questa e’ una dichiarazione di guerra!

Alura, taglia e incolla la query nella console di mysql e lui mi ritorna correttamente l’elenco dei routers che sono nello script. E perche’ non mi ritorna quegli altri?

Mi metto percio’ a vivisezionare le varie relazioni. Allora, la tabella “proprieta’” e’ in relazione con “oggetti”, la quale e’ in relazione con “relazioni”, la quale e’ in relazione con “oggetti” (di nuovo) la quale e’ in relazione con “proprieta’” (di nuovo)…

Dopo aver tirato una manica di accidenti alla tipa e ad H riesco a scovare il problema, la maledetta cosa cerca una relazione di tipo “eigendom” (che, credeteci o no, significa “proprieta’”), mentre, per qualche strano motivo, il router che non compare, la relazione l’ha di tipo “network”.

Dopo essermi grattato la pera per una buona mezz’ora ed aver cercato di capire esattamente a che cappero servono i tipi di relazione, provo a cambiare il tipo nel db e rifaccio la query alla console.

Certo come il sorgere del sole, il router “mancante” appare nella lista.

Una rapida ricerca nei meandri del codice dell’interfaccia di questo database non mi ritorna nessuna spiegazione del perche’ uno degli oggetti ha una relazione di un tipo e l’altro no. Quindi mi limito a cambiare i vari record che non compaiono ed a verificare che a) siano ancora riportati nell’interfaccia e b) compaiano nello script.

Butto giu’ due note di documentazione sulla cosa ed informo A che il suo problema per il momento e’ risolto.

Adesso, il prossimo passo nel mio (lungo) elenco di cose da fare e’: proporre il rifacimento del maledetto database di configurazione. Possibilmente NON in php.

Davide

legenda personaggi

Technorati Tags: Storie dalla Sala Macchine,humor

Articoli simili:

  • Facebook
  • Twitter
  • Delicious
  • StumbleUpon
  • Wikio
  • Reddit
  • Technorati
  • Segnalo
  • Live
  • Add to favorites
  • Email
  • RSS

 Lascia un commento

Puoi usare questi tag e attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(richiesto)

(richiesto)

Pinterest
EmailEmail
PrintPrint
%d blogger hanno fatto clic su Mi Piace per questo: