Buenos días a tod@as!!
En el post de hoy, voy a dejaros un pequeño playbook que estoy utilizando para realizar backups automaticamente de algunas configuraciones de switches cisco, tanto de la gama Catalyst (IOS) como Nexus (NXOS)
Lo primero que necesitaremos es disponer del fichero de inventario correspondiente, con todas las IPs y variables que necesitaremos mas adelante en el playbook.
Inventario
1 |
|
¿Qué son estas variables?
En este inventario, tendremos que definir las siguientes variables:
-
host
La IP de management del SW -
username
Usuario con privilegios para ejecutar comandos -
password
Contraseña del usuario proporcionado en la variable anterior -
backup_folder
Ruta que se creará y donde se almacenaran los ficheros con la información que devuelvan los comandos -
cisco_os
SO que tienen nuestros SW, utilizaremos esta variable como condicional para ejecutar comandos ios o nxos.
En mi caso, el fichero de inventario se llama cisco
(lo sé, soy muy original..)
El playbook
A continuacion os paso el playbook cisco_backup.yml
e intento explicar que hace cada play:
1 |
|
¿Qué hace cada play?
-
Create root directory if don't exist
Nos creará la carpeta que utilizaremos como raíz para guardar los backups. La variable estará definida en el fichero de inventario. -
Create individual device folder if don't exist
En caso de que no exista, dentro del root directory, nos creará una carpeta con el nombre de cada SW -
Register timestamp variable
Simplemente creará una variable para guardar una marca temporal -
Execute IOS commands
Aquí es donde ejecutamos todos los comandos IOS sobre nuestros SW y guardamos los resultados en una variable. -
Create IOS command folder if don't exist
Dentro de la carpeta de cada SW, crearemos otra carpeta con el nombre del comando ejecutado previamente. -
Save IOS command output on destination file
Guardamos el valor de la variale (dónde está la salida de cada comando) en un fichero .txt en la carpeta formada por /root_dorectory/nombre_sw/nombre_comando/nombre_sw_nombre_comando_timestamp.txt -
Execute NXOS commands
Lo mismo que hemos explicado para IOS -
Create NXOS command folder if don't exist
Lo mismo que hemos explicado para IOS -
Save NXOS command output on destination file
Lo mismo que hemos explicado para IOS
¿Y ahora, cómo lo ejecuto?
Para ejecutar este playbook, lo llamaremos de la siguiente manera:
ansible-playbook /etc/ansible/playbooks/cisco_backup.yml -i /etc/ansible/inventory/cisco -e "sw=nombre_sw_o_grupo"
la variable sw
hace raferencia a los equipos o grupos que hemos definido en el fichero de inventario. Por ejemplon CPD-1
¿Y si lo quiero programar periodicamente?
Y si queremos programarlo, lo añadiremos al cron de nuestro usuario tal que así:
Los resultados
Finalmente, así quedaria nuestra estructura de carpetas con los correspondientes .txt que guardan la salida de la ejecución de cada comando.
En un próximo post, veremos como visualizar facilmente esta información a través de un navegador web ;-)
Espero que os sirva.
Un saludo!
Miquel.