Abner (@ abnerg) Germanov ci ha sorpreso tutti alla fine della presentazione di Juniper alField Day Networking Tech quando ha annunciato Junosphere accesso per tutti i delegati - dopo un anno di fastidioso, sarei finalmente in grado di toccare Junos. Tuttavia, invece di prendersela con comodo e studiando l'ottimo Day Junos One libri (che ho anche fatto - se siete nuovi a Junos si dovrebbe assolutamente cominciare da lì, sono vale la pena leggere), ho deciso di adottare un approccio più geek.
Ovviamente sarebbe più facile e più veloce per me di acquistare un SRX o due di eBay per ottenere l'esposizione a Junos, ma ho voluto mettere alla prova alcuni scenari po 'più grande con le recenti versioni Junos e il materiale usato raramente viene con il software nuovo di zecca (non menziona neppure che si possa ottenere Junos in natura ed eseguirlo su Olive).
Se avete guardato il video della Automation Junos presentazione Dan Backman ha fatto durante la giornata Tech campo Networking, potreste aver notato quanto ero emozionato per il fatto che utilizza XML Junos internamente - ho sviluppato diverse basato su XML, siti web e sapere tutto sulla flessibilità (e di molto sul dolore) di usare XML e XSLT dietro le quinte.
Come Cisco IOS presumibilmente supporta anche l'output XML, ho avuto questa idea molto semplice: generare codice XML da parte di Cisco IOS, utilizzare una trasformazione XSLT di copiare i parametri rilevanti in formato XML di configurazione Junos, e un'altra trasformazione XSLT per trasformarla in serie comandi o ricci bretelle sintassi.
So che Juniper offre un IOS-to-Junos strumento di traduzione di configurazione ... ma il suo utilizzo non sarebbe stato divertente quasi quanto (per non parlare del valore educativo), come questo progetto è stato.
Step # 1 - ottenere Junos campione configurazioni in formato XML . Alcuni amici twitter ha risposto alla mia richiesta di aiuto (volevo avere pronto prima di accedere Junosphere) e mi ha inviato rimosso file di configurazione in formato XML e il formato di prova. Grazie, sei stato di grande aiuto!
Step # 2 - generare testo da XML di configurazione . Ouch. Come ogni altro sistema di grandi dimensioni, Junos sembra essersi evoluta "organicamente" e non c'è modo semplice per trasformare la configurazione XML in un formato che è identico a un testo di configurazione di un router Junos genera, ci sono eccezioni, troppi (più su che un'altra volta ).
Comunque, ho avuto il 95% ci sarà dopo tweaking esteso e si scopre Junos non si preoccupa troppo la sintassi esatta - fino a quando la struttura dell'oggetto è corretta, di solito analizza e accetta la configurazione.
Se siete interessati a questo progetto, scaricare le XSLT e giocare con essa. Per usarlo, è necessario un processore XSLT 2.0, mi raccomando Saxon (Home Edition) .
Passo # 3 - generare configurazioni XML da Cisco IOS . Fail. Cisco IOS non usa XML internamente; sue configurazioni vengono generate in formato testo (non incolpare nessuno - lo sviluppo di Cisco IOS era iniziata molto tempo prima che qualcuno addirittura sognato di XML).
Tuttavia, in teoria si dovrebbe essere in grado di ottenere una configurazione IOS in formato XML con la configurazione spettacolo | formato di comando. Purtroppo, questo comando deve poter contare su una tecnica in qualche modo simile a screen scraping - ri-analizza la configurazione generata da Cisco IOS e cerca di munge in formato XML.
Il processo funzionato ragionevolmente bene quando ho provato anni fa, questa volta ho avuto l'analisi degli errori e totalmente inutilizzabile XML. Tempo per piano B.
Un disadattato fa la scelta sbagliata
A questo punto, ho avuto alcune opzioni:
- Genera configurazione Junos a mano. Questo sarebbe il più facile e meno doloroso, dopo tutto, volevo avere la configurazione di base, l'indirizzamento IP e il routing IGP dalla mia configurazioni esistenti IOS.
- Scrivere uno script Perl che avrebbe usato espressioni regolari per raccogliere quei parametri di configurazione IOS e uscita in parentesi graffe formato.
- Sviluppare una soluzione generica.
A questo punto, probabilmente sapete quale opzione un geek stupido con una forte affinità per ottenere-da-destra soluzioni avrebbe scelto ... perché un mucchio di espressioni regolari in uno script Perl semplicemente non è abbastanza buono quando tutto ciò che serve è IP/IPv6 interfaccia affrontare e OSPF / IS-IS di routing.
Due giorni dopo, ho avuto una serie di script Perl che:
- Analizzare un linguaggio semplice che può essere utilizzato per specificare i parametri di configurazione Cisco IOS volete partita e come si traducono in nodi XML in Junos configurazione (sì, ho rivisitato il paese delle meraviglie di LR-parser e riscoperto Parse:: RecDescent).
- Interpretare il linguaggio per raccogliere informazioni di configurazione di Cisco IOS e creare XML DOM tree (per fortuna, il codice XML:: LibXML Perl modulo supporta la sintassi XPath);
- In uscita il documento XML generato o spingerla attraverso il processore XSLT per generare la configurazione Junos.
Al momento, tutti questi script può fare è copiare gli indirizzi di interfaccia IP/IPv6 e molto di base IS-IS configurazione del routing dal formato Cisco IOS in formato Junos ... ma la soluzione è chiaramente estensibile;) e genera effettivamente lavorando configurazioni Junos che ero in grado di utilizzare in Junosphere.
Nessun commento:
Posta un commento
Nota. Solo i membri di questo blog possono postare un commento.