Fino a ieri funzionava
Se anche tu sei uno a cui piace giocare con i propri dispositivi, testare funzionalità e migliorie, prima o poi scoprirai sai che è importantissimo tenere traccia delle modifiche fatte in configurazione.
Oppure pensa solo a quello che definisco il Cisco classic: quell’ultimo fondamentale wr (write memory) che ti sei dimenticato di lanciare e che ti ha fatto tanto gioire dopo un inaspettato riavvio!
Ecco allora che il versioning, ovvero tenere traccia delle diverse versioni della nostra conf, monitorare le modifiche apportate nel tempo, archiviare e recuperare facilmente le versioni precedenti in caso di necessità è fondamentale.
Se poi questa operazione la puoi anche automatizzare è un bel plus no? Vediamo come…
Creare utente di sola lettura Cisco
Ci servirà un utente per accedere al nostro Cisco che abbia i permessi per eseguire show run e NO, non userai il tuo utente o l’admin di turno.
Seguendo il principio del privilegio minimo, in inglese principle of least privilege (PoLP), useremo un utente dedicato al nostro scopo che abbia solo i privilegi strettamente necessari ovvero sola lettura della configurazione.
Aggiungiamo l’utente readonly_user con privilege level 4 e password readonly_pass
cisco-lab#conf t
cisco-lab(config)#username readonly_user privilege 4 secret readonly_pass
Aggiungiamo quindi i comandi che vogliamo abilitare per il privilege level 4
cisco-lab(config)#privilege exec level 4 show running-config view full
E aggiungiamo l’abilitazione file per il privilege level 4
cisco-lab(config)#file privilege 4
Senza questa, su versioni recenti di IOS, non è possibile leggere il contenuto della flash e della nvram quindi lo show run produrrebbe un output vuoto.
Non ci resta che pianificare l’attività di recupero della configurazione e la sua gestione.
Vediamo due approcci diversi, entrambi personalizzabili in base alle esigenze.
Verifica e Archiviazione automatica con Zabbix
Di Zabbix parliamo spesso e personalmente ne sono un grande fan, quindi se lo stai già utilizzando è ovviamente la scelta più semplice:
- creiamo un Item di tipo SSH agent
- gli facciamo eseguire show running-config view full
ed in base a quello che vogliamo ottenere andremo poi a personalizzare lo scheduling, la history ed eventuali Trigger.
Per le mie necessità, ad esempio, ho creato un Template che trovi sul mio
GitHub.
L’utilizzo è molto semplice, dopo aver settato le MACRO per l’accesso SSH
archivierà 1 configurazione al giorno e creerà 2 Trigger per questi eventi:
- configurazione modificata
- impossibile recuperare dati
Scripting Cisco con Expect
La seconda possibilità di cui parliamo è lo scripting, in particolare con Expect.
Expect è un estensione del linguaggio di scripting Tcl che, citando man, “parla” con terminali interattivi e seguendo uno script sa cosa aspettarsi (expect) da questi e come rispondere.
Possiamo quindi scriptare l’acquisizione della configurazione e integrarla con le nostre necessità di archiviazione:
full su base temporale, diff, git, insomma quello che ti pare… partendo da questo configdump.exp
|
|
L’esecuzione è dettagliata nei commenti: si tratta di gestire l’input e l’output interattivo tramite semplici sequenze di expect dei pattern Cisco e send dei comandi necessari.
Per eseguirlo dovremo solo passare i parametri del nostro device per ottenere la configurazione in output con exit status 0 in caso di successo, oppure exit status 1 in caso qualcosa sia andato storto.
|
|
Conclusioni
Fermo restando la necessità di automatizzare un’attività importante, come hai visto le soluzioni proposte sono “aperte” a personalizzazioni anche molto verticali.
L’intento è infatti quello di darti gli input necessari a crearti la tua integrazione che possa essere a misura dei processi esistenti!
Quale userai? E come? Faccelo sapere nei commenti!