Trigger eventi su Catalyst 9k e NX-OS per avviare script python

Continuiamo con la nostra serie di articoli che, attraverso esempi pratici e semplificati, dimostrano l’applicazioni di strumenti fondamentali nei rispettivi ambiti. È il turno di introdurre al mondo della network programmability nell’ambito del trend inarrestabile del software defined network. Questo articolo tratterà come usare eventi all’interno degli apparati per “triggerare” script python ed altre azioni. Su nuovi Catalyst 9000 (9k) e su sistemi NX-OS è possibile creare, tramite Event Manager, una lista di azioni da intraprendere al verificarsi di un determinato evento, come ad esempio il salvataggio della configurazione o la caduta di una interfaccia o altro ancora. Su NX-OS il python si può “richiamare” direttamente da linea di comando, mentre sui Catalyst 9000 si dovrà attivare la guestshell. Vediamo come.

Attivare la guestshell su Catalyst 9k:

c9k# conf t
c9k(config)# iox
c9k(config)# exit
c9k# guestshell enable

Attenzione!, Il comando guestshell enable potrebbe dare il seguente errore “The process from the command is not responding or is otherwise unavailable”. In tal caso c’è da attendere un minuto che il comando iox attivi tutto ciò che è necessario per poi imputare di nuovo il comando di enable.

Controlliamo che i processi siano attivi. Con i comandi “show iox-service” e “show app-hosting list” dovremmo poter vedere tutto in “running”, compresa la guestshell.
Eventuali maggiorni dettagli possiamo ottenerli attraverso il comando “show app-hosting detail”

9300-1#show iox-service
IOx Infrastructure Summary:
—————————
IOx service (CAF) : Running
IOX service (HA) : Running
IOx service (IOxman) : Running
Libvirtd : Running
9300-1#show app-hosting list
App id State
———————————————-
guestshell RUNNING

CORSI CORRELATI:

Consulta il nostro Catalogo Corsi per Tecnologia oppure fai una Ricerca per Vendor o ancora trova uno specifico corso attraverso il motore di ricerca interno: Ricerca Corsi. Contattaci ora al Numero Verde 800-177596, il nostro team saprà supportarti nella scelta del percorso formativo più adatto alla tue esigenze.

Ora Testiamo guestshell e python. A questo punto potremo dare i comandi di guestshell su catalyst, come “guestshell” che ci porterà in ambiente linux, e dove con VI, nano o l’editor che preferiamo, potremo scrivere i nostri script in python. Per avviare python possiamo entrare prima in guestshell e poi dare il imputare il comando “python” esattamente come in ambiente linux, oppure, “guestshell run python”:

c9k# guestshell run python
Python 2.7.2 (default, Mar 9 2015, 15:52:40)
[GCC 4.6.3] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

Su Nexus, nonostante python sia raggiungibile direttamente senza passare da guestshell o bash, ci potrebbe tornare utile attivare la bash per scrivere i nostri script, o incollarli direttamente. Per attivare la bash su NX-OS:

R2(config)#switch# configure terminal
switch(config)# feature bash-shell

Trigger su piattaforma NX OS.
Nel seguente esempio abbiamo uno script nella home dell’utente con cui siamo loggati (nel mio caso, l’utente admin), che è esattamente quella dove ci troveremo con il comando “run bash”. Se invece si vogliono sfruttare le potenzialità del comando source sotto nx-os lo script andrà salvato nella cartella scripts “../../script”, ovvero: “/bootflash/script”. L’action command diventa “action 1.0 cli source script.py”. Una volta usato il comando “copy run start” lo script verrà chiamato:

switch# conf t
switch(config)# event manager applet test_trigger
switch(config-applet)# event cli match “copy run.* start.*”
switch(config-applet)# action 1.0 cli run bash python /bootflash/home/admin/script.py
switch(config-applet)# action 2.0 event-default

Trigger su Catalyst 9k:

switch# conf t
switch(config)# event manager applet test_trigger
switch(config-applet)# event syslog pattern “SYS-5-CONFIG_I”
switch(config-applet)# action 0 cli command “enable”
switch(config-applet)# action 1 cli command “guestshell run python script.py”

Si vedono delle differenze già in questi banali esempi, il più importante riguarda l’event-default. Su nexus, se non viene dato quel comando nelle action dell’event manager, i comandi che matchano la stringa verranno inibiti. Se si fanno quindi regole per il “conf t” e non si usa l’event-default, si rischia di rimanere tagliati fuori.
Su catalyst mostriamo un match diverso per il trigger, ovvero un pattern del syslog. Il comando enable è necessario su catalyst.
Il numero di action può essere espresso sia come integer (1, 2, 3 ,4) che come flaoting point (1.1, 1.2, 2.1, ..)
Ecco i vari eventi possibili:

switch(config-applet)# event ?
cli Create a cli event specification
counter Create a counter event
fanabsent Create fanabsent event specification
fanbad Create fanbad event specification
fib FIB related event
gold Create a ‘Diagnostic’ event specification
internal-link-flap Create a ‘internal-link-flap’ event specification
memory Create memory thresholds event specification
module Create a ‘module’ event specification
module-failure Create a ‘module-failure’ event specification
neighbor-discovery Show CDP new neighbors
oir Create Online-Insertion-Removal event specification
policy-default Use the event in the system policy being overridden
poweroverbudget Create poweroverbudget event specification
snmp Create a ‘snmp’ event specification.
storm-control Create a storm control event specification
syslog Create a syslog event specification
sysmgr System manager related events
tag Event tag identifier
temperature Create temperature event specification
test Create a ‘test’ event specification
track Create a ‘track’ event specification

Quando si ha necessità di avere una condizione fra event, si usano i tag. Abbiamo la possibilità di usare gli operatori logici (OR, AND, ANDNOT)

event syslog tag one pattern “pattern#1”
event syslog tag two pattern “pattern#2”
event syslog tag three pattern “pattern#3”
tag one or two or three happens 1 in 120

Consulta il nostro Catalogo Corsi per Tecnologia oppure fai una Ricerca per Vendor o ancora trova uno specifico corso attraverso il motore di ricerca interno: Ricerca Corsi. Contattaci ora al Numero Verde 800-177596, il nostro team saprà supportarti nella scelta del percorso formativo più adatto alla tue esigenze.

RICHIEDI ORA IL SUPPORTO DI UN NOSTRO SPECIALISTA

Il nostro team, da anni impegnato nella progettazione di piani formativi strutturati nell’ambito dell’ IT, ti supporterà ad orientarti verso la scelta di un percorso formativo certificato rispondente alle tue esigenze.