Entradas

Mostrando las entradas etiquetadas como ansible

Python | Crear archivo .csv con datos obtenidos mediante libreria NAPALM

import napalm # Create a hosts file to include all the target IPs/hostnames that will be SSH'd. f = open ("/home/eve/hosts") # Create a .csv file and define all of the columns matching with NAPALM's "get_facts" output. csv_columns=("FQDN;HOSTNAME;MODEL;OS VERSION;SERIAL NUMBER;UPTIME;VENDOR\n") file= open("napalm.csv","w") file.write(csv_columns) # Create a python loop where it perform the following actions: # 1. Create the "host" variable where we will extract each line of code on every iteration using strip() # 2. Define the NAPALM's driver + SSH Username and Password # 3. Connect to each target host (via SSH) using device.open() # 4. Perform NAPAM's "get_facts" on the target host in order to get general data from the Cisco device in an "structured" way. This data is stored as a "Dictionary". # 5. Take each key data (fqdn, hostname, serial_number...) from "g...

Ansible | Ejecutar comandos CLI en multiples dispositivos Cisco IOS con cisco.ios.ios_config

Anteriormente, he mostrado varios playbooks sencillos con Ansible para realizar comandos del tipo show para mostrar configuración de los routers y switches.  Ahora os mostraré como ejecutar comandos CLI en multiples dispositivos Cisco IOS con la ayuda del módulo de Ansible llamado cisco.ios.ios_config. Básicamente con este módulo lo que conseguiremos es entrar en modo de configuración global dentro de un router o un switch (lo mismo a hacer un conf t ) y luego ejecutariamos los comandos de configuración de Cisco.   Para entenderlo mejoren el siguiente ejemplo, ejecutariamos los siguientes comandos CLI: Router#conf t Router(config)# snmp-server host 192.168.1.50 version 2c <communitystring> Router(config)# snmp-server host 192.168.1.50 version 2c <communitystring> Router(config)# snmp-server host 192.168.1.50 version 2c <communitystring> Router(config)# end Router#copy run start (enter) Para hacer lo mismo en Ansible y a su vez ejecutarlo en multiples dispo...

Ansible | Realizar backup de uno o multiples dispositivo Cisco IOS

1r paso. Editamos el inventory file de Ansible llamado "hosts" donde definiremos las IPs/Hosts de los Routers/Switches que queramos realizar el backup.  root@angel-pc:/etc/ansible# nano hosts [devices] 192.168.1.10 192.168.1.20 [devices:vars] ansible_python_interpreter=/usr/bin/python3 ansible_connection=network_cli ansible_network_os=ios ansible_ssh_user=usuario_ssh ansible_ssh_pass=password_ssh 2o paso. Creamos un nuevo script donde aplicaremos el siguiento código:  root@angel-pc:/etc/ansible# nano sh_run_backup.yml --- - hosts: all gather_facts: false # Ejecutamos el comando 'show run' en el dispositivo Cisco IOS tasks: - name: Backup IOS device running config cisco.ios.ios_command: commands: show run # Registramos el output del comando 'sh run' y lo guardamos en una variable llamada 'var'    register: print_output - debug: var=print_output.stdout_lines # Exportamos el output de la variable var, lo convertimos en lenguaje JS...

Ansible: Ejecutar multiples comandos en CLI en multiples dispositiovs (ideal para Inventariado de assets!)

1. Definir los hosts que nos conectaremos via SSH root@angel-pc:/etc/ansible# nano hosts [devices] 192.168.1.10 192.168.1.20 [devices:vars] ansible_python_interpreter=/usr/bin/python3 ansible_connection=network_cli ansible_network_os=ios ansible_ssh_user=<usuario_ssh> ansible_ssh_pass=<password_ssh> 2. Crear script donde ejecutaremos 5 comados CLI por cada IP/Host que nos conectemos via SSH (Estos son los comandos a ejecutar) show version show ip int brief show cdp nei show ip route show inventory root@angel-pc:/etc/ansible/show_version# nano show_version_ciscoios_ansible.yml --- - hosts: all gather_facts: false tasks: - name: SHOW VERSION cisco.ios.ios_command: commands: show version register: print_output - debug: var=print_output.stdout_lines - name: SHOW IP INT BRIEF cisco.ios.ios_command: commands: show ip int brief register: print_output2 - debug: var=print_output2.stdout_lines - name: SHOW CDP NEI cisco.ios.ios_command: commands: show cdp nei register:...

Ansible: Ping a multiples IPs definidas en el Host file

Este script en ansible nos servira para hacer PING a multiples IPs que definamos en el host file y nos mostrará los resultados de una forma bien ordenada y simple. Para ello necesitamos 2 pasos: 1) Configurar el archivo de hosts con las IPs que queremos hacer PING [devices] 192.168.1.1 192.168.1.56 192.168.1.54 192.168.1.28 2) Ejecutar el siguiente comando root@angel-pc:/etc/ansible# ansible all -i hosts -e ansible_connection=local -m command -a 'ping {{inventory_hostname}} -c 1' 3) Observamos el resultado (o output) del comando 192.168.1.1 | CHANGED | rc=0 >> PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=128 time=33.9 ms --- 192.168.1.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 33.860/33.860/33.860/0.000 ms 192.168.1.56 | CHANGED | rc=0 >> PING 192.168.1.56 (192.168.1.56) 56(84) bytes of data. 64 bytes from 192.168.1.56: icmp_seq=1 ttl=128 time=163 ms --- ...

Ansible: Ejecutar el comando "show sysinfo" en multiples Cisco WLC (AireOS)

# Paso 1 - definir lista de IPs de los WLC donde nos conectaremos via SSH nano /etc/ansible/hosts  [ciscoios] WLC1 ansible_host=192.168.1.10 WLC2 ansible_host=192.168.1.11 [ciscoios:vars] ansible_python_interpreter=/usr/bin/python3 ansible_connection=network_cli ansible_network_os=aireos # Paso 2 - Crear script en ansible para ejecutar el comando "show sysinfo". Tener en cuenta que tendremos que descargar el modulo community.network.aireos_config para poder gestionar Cisco WLCs en Ansible. Necesitareis descargar el módulo usando este comando:  ansible-galaxy collection install community.network nano /etc/ansible/show_sysinfo_ciscowlc_ansible.yml --- - name: Get SNMP info hosts: all gather_facts: false tasks: - name: Run show sysinfo on remote devices community.network.aireos_command: commands: show sysinfo register: print_output - debug: var=print_output.stdout_lines   # Paso 3 - Ejecutar script ansible-playbook show_sysinfo_ciscowlc_ansible.yml -u <usuari...

Ansible: Playbook basico para Cisco IOS

 1. Configurar hosts file -> /etc/ansible/hosts [ciscoios] 192.168.1.10 192.168.1.20 [ciscoios:vars] ansible_python=interpreter=/usr/bin/python3   2. Configurar playbook -> nano /etc/ansible/show_version.yml --- - name: show version   hosts: all   gather_facts: false   tasks:     - name: show version       raw: "show version"       register: print_output     -  debug: var=print_output.stdout_lines 3. Ejecutar playbook con nuestro usuario de sssh-> ansible-playbook show_version.yml -u angel -k Obtendremos un output de este estilo: root@angel-pc:/etc/ansible# ansible-playbook show_version.yml -u angel -k SSH password: PLAY [show version] ********************************************************************************************************************************** TASK [show version] ***************************************************************************************...