Los ingenieros de redes aprenden el marco de orquestación de tareas de automatización de redes simplificado Python-39 Nornir

Nornir es un marco de orquestación de automatización basado en Python diseñado para simplificar la tarea de automatización de redes. Proporciona algunas operaciones básicas, como SSH, Telnet, HTTP y API para muchos dispositivos de red. En este artículo, presentaremos el uso básico del marco Nornir y algunos ejemplos comunes.

Instalar

Puede instalar el marco Nornir con el siguiente comando:

pip install nornir

uso

Aquí hay un ejemplo simple de código Nornir que imprime una lista de hosts:

from nornir import InitNornir

nr = InitNornir(config_file="config.yaml")

for host in nr.inventory.hosts.values():
    print(host)

Debe proporcionar un archivo de configuración que le indicará al marco Nornir cómo conectar sus dispositivos de red. Aquí hay un archivo de configuración de ejemplo:

inventory:
    plugin: SimpleInventory
    options:
        host_file: "hosts.yaml"
        group_file: "groups.yaml"

credentials:
    napalm:
        username: "admin"
        password: "admin"

runner:
    plugin: threaded
    options:
        num_workers: 20

inventoryLa sección le indica a Nornir cómo leer sus listas de anfitriones y grupos. En este ejemplo, utilizamos un complemento de inventario simple que utiliza un archivo con formato YAML para definir hosts y grupos.

credentialsLa parte le dice a Nornir cómo conectarse al dispositivo. En este ejemplo, utilizamos el complemento napalm para conectarnos al dispositivo, por lo que debemos proporcionar el nombre de usuario y la contraseña que requiere el complemento napalm.

runnerLa sección le dice a Nornir cómo ejecutar la tarea. En este ejemplo, utilizamos un complemento de subprocesos para ejecutar tareas en paralelo y configurar 20 subprocesos de trabajo.

ejemplo

Conéctese y obtenga información del dispositivo

El siguiente ejemplo de código demuestra cómo usar Nornir para conectarse a un dispositivo y obtener la información del dispositivo:

from nornir import InitNornir
from nornir.plugins.tasks.networking import napalm_get

nr = InitNornir(config_file="config.yaml")

result = nr.run(task=napalm_get, getters=["interfaces", "facts"])

for host, r in result.items():
    print(f"Host: {host}")
    print(f"Interfaces: {r[0].result['interfaces']}")
    print(f"Facts: {r[1].result['facts']}")

En este ejemplo, utilizamos la tarea napalm_get para obtener la interfaz y la información básica del dispositivo.

Nornir admite la ejecución de tareas asincrónicas, implementadas mediante la biblioteca asyncio. A través de la biblioteca asyncio, podemos usar corrutinas para ejecutar tareas simultáneamente para mejorar la eficiencia de la ejecución.

A continuación se muestra un código de muestra que utiliza la ejecución de tareas asincrónicas:

import asyncio
from nornir import InitNornir


async def task1(task):
    print(f"Task {task.task_id} starting")
    await asyncio.sleep(2)
    print(f"Task {task.task_id} ending")


async def main():
    nr = InitNornir(config_file="config.yaml")
    tasks = [task1 for host in nr.inventory.hosts.values()]
    await asyncio.gather(*tasks)


if __name__ == "__main__":
    asyncio.run(main())

En el ejemplo anterior, primero definimos una tarea asincrónica task1, imprimimos el ID de la tarea en la tarea, luego esperamos 2 segundos y finalmente imprimimos el ID de la tarea nuevamente. Luego definimos una función principal main, inicializamos Nornir en la función y usamos tareas asincrónicas para realizar múltiples task1tareas. Finalmente, use el método en el programa principal asyncio.runpara ejecutar la función principal.

En el código anterior, utilizamos asyncio.gathermétodos para ejecutar todas las tareas al mismo tiempo. asyncio.gatherEl método acepta múltiples corrutinas como parámetros, luego ejecuta estas corrutinas simultáneamente y espera a que se completen todas.

Resumir

Este artículo presenta el uso básico y el código de muestra del marco Python Nornir, incluida la inicialización de Nornir, la ejecución de tareas, el uso de grupos, el uso de filtros, el uso de datos dinámicos, el uso de complementos personalizados y el uso de complementos como SSH, Telnet y Netmiko. y utilizando tareas de ejecución asincrónicas, etc. A través de la introducción de este artículo, los lectores pueden aprender cómo utilizar el marco Nornir para la administración y configuración automatizadas de la red, y cómo ampliar la funcionalidad del marco a través de complementos Nornir y complementos personalizados.

Supongo que te gusta

Origin blog.csdn.net/weixin_43025343/article/details/132638790
Recomendado
Clasificación