
El pr贸ximo lanzamiento de Red Hat Ansible Engine 2.9 te espera con mejoras impresionantes, algunas de las cuales se describen en este art铆culo. Como de costumbre, desarrollamos mejoras de Ansible Network abiertamente, con el apoyo de la comunidad. 脷nase: eche un vistazo al panel de tareas en GitHub y estudie el plan de desarrollo para el lanzamiento de Red Hat Ansible Engine 2.9 en la p谩gina wiki de Ansible Network .
Como anunciamos recientemente, Red Hat Ansible Automation Platform ahora incluye Ansible Tower, Ansible Engine y todo el contenido de Ansible Network. Ahora, las plataformas de red m谩s populares se implementan a trav茅s de m贸dulos Ansible. Por ejemplo:
- Arista eos
- Cisco IOS
- Cisco IOS XR
- Cisco NX-OS
- Juniper Junos
- Vyos
Una lista completa de plataformas que son totalmente compatibles con Red Hat a trav茅s de Ansible Automation est谩 disponible aqu铆 .
Que hemos aprendido
En los 煤ltimos cuatro a帽os, hemos aprendido mucho sobre el desarrollo de una plataforma para la automatizaci贸n de redes. Tambi茅n aprendimos c贸mo los usuarios finales juegan artefactos de plataforma en libros de jugadas y roles de Ansible. Y aqu铆 est谩 lo que descubrimos:
- Las organizaciones automatizan dispositivos no solo uno, sino muchos proveedores.
- La automatizaci贸n no es solo un fen贸meno t茅cnico, sino tambi茅n cultural.
- La automatizaci贸n de redes a gran escala es m谩s complicada de lo que parece, debido a los principios arquitect贸nicos fundamentales del dise帽o de automatizaci贸n.
Cuando discutimos nuestros planes de desarrollo a largo plazo hace m谩s de un a帽o, nuestros clientes corporativos solicitaron lo siguiente:
- La recopilaci贸n de datos debe estar mejor estandarizada y alineada con el flujo de trabajo de automatizaci贸n para cualquier dispositivo.
- La actualizaci贸n de las configuraciones en el dispositivo tambi茅n debe estandarizarse y armonizarse para que los m贸dulos Ansible procesen la segunda mitad del ciclo despu茅s de recopilar los datos.
- Necesitamos m茅todos rigurosos y compatibles para convertir la configuraci贸n del dispositivo en datos estructurados. Sobre esta base, la fuente de la verdad se puede mover desde un dispositivo de red.
Mejoras de hecho
La recopilaci贸n de datos de dispositivos de red que usan Ansible a menudo es aleatoria. Las plataformas de red est谩n equipadas en diversos grados con la capacidad de recopilar datos, pero casi no tienen, o incluso ninguna, funciones para analizar y estandarizar la presentaci贸n de datos en pares clave-valor. Lea la publicaci贸n de Ken Celenza sobre lo dif铆cil y doloroso que es analizar y estandarizar datos reales.
Es posible que haya notado c贸mo trabajamos en el rol de Ansible Network Engine. Naturalmente, 24,000 descargas despu茅s, el rol de Network Engine se convirti贸 r谩pidamente en uno de los roles m谩s populares de Ansible en Ansible Galaxy para escenarios de automatizaci贸n de redes. Antes de trasladar gran parte de esto a Ansible 2.8, para prepararnos para lo que Ansible 2.9 necesitaba, este rol de Ansible proporcion贸 el primer conjunto de herramientas para ayudar en el an谩lisis de comandos, la administraci贸n de comandos y la recopilaci贸n de datos para dispositivos de red.
Si es bueno en el uso de Network Engine, esta es una forma muy eficiente de recopilar, analizar y estandarizar datos de hechos para usar con Ansible. La desventaja de este rol es que necesita crear un mont贸n de analizadores para cada plataforma y para toda la actividad de la red. Para comprender lo dif铆cil que es crear, enviar y mantener analizadores, mire los m谩s de 1200 analizadores de los muchachos de Cisco.
En pocas palabras, para la automatizaci贸n a gran escala es muy importante recibir datos de los dispositivos y normalizarlos en pares clave-valor, pero esto es dif铆cil de lograr cuando se tienen muchos proveedores y plataformas de red.
Cada m贸dulo de hechos de red en Ansible 2.9 ahora puede analizar la configuraci贸n de un dispositivo de red y devolver datos estructurados, sin bibliotecas adicionales, roles de Ansible o analizadores personalizados.
Comenzando con Ansible 2.9, con cada versi贸n del m贸dulo de red actualizado, el m贸dulo de hechos se mejora para proporcionar informaci贸n sobre esta secci贸n de configuraci贸n. Es decir, el desarrollo de hechos y m贸dulos ahora est谩 sucediendo al mismo ritmo, y siempre tendr谩n una estructura de datos com煤n.
La configuraci贸n de recursos en un dispositivo de red se puede extraer y convertir en datos estructurados de dos maneras. En ambos sentidos, puede compilar y convertir una lista espec铆fica de recursos utilizando la nueva gather_network_resources
. Los nombres de los recursos corresponden a los nombres de los m贸dulos, y esto es muy conveniente.
A la hora de recopilar los hechos:
Con la gather_facts
puede extraer la configuraci贸n actual del dispositivo al principio del libro de jugadas y luego usarla en todo el libro de jugadas. Especifique los recursos individuales para recuperar del dispositivo.
- hosts: arista module_defaults: eos_facts: gather_subset: min gather_network_resources: - interfaces gather_facts: True
Puede notar algo nuevo en estos ejemplos, a saber, gather_facts: true
ahora gather_facts: true
disponible para la b煤squeda de datos nativa para dispositivos de red.
Usando el m贸dulo de datos de red directamente:
- name: collect interface configuration facts eos_facts: gather_subset: min gather_network_resources: - interfaces
El libro de jugadas devuelve los siguientes datos sobre la interfaz:
ansible_facts: ansible_network_resources: interfaces: - enabled: true name: Ethernet1 mtu: '1476' - enabled: true name: Loopback0 - enabled: true name: Loopback1 - enabled: true mtu: '1476' name: Tunnel0 - enabled: true name: Ethernet1 - enabled: true name: Tunnel1 - enabled: true name: Ethernet1
Observe c贸mo Ansible recupera la configuraci贸n nativa del dispositivo Arista y la convierte en datos estructurados para usar como pares clave-valor est谩ndar para tareas y operaciones posteriores.
Los datos de la interfaz pueden agregarse a las variables almacenadas de Ansible y usarse inmediatamente o m谩s tarde como entrada al eos_interfaces
recursos eos_interfaces
sin procesamiento o conversi贸n adicional.
M贸dulos de recursos
Entonces, extrajimos los hechos, normalizamos los datos, los ingresamos en un esquema interno estandarizado de la estructura de datos y obtuvimos una fuente de verdad. 隆Hurra! Esto, por supuesto, es excelente, pero a煤n necesitamos convertir de alguna manera los pares clave-valor a la configuraci贸n espec铆fica que una plataforma de dispositivo espec铆fica espera. Ahora necesitamos m贸dulos para plataformas espec铆ficas para satisfacer estos nuevos requisitos de recopilaci贸n y normalizaci贸n de hechos.
驴Qu茅 es un m贸dulo de recursos? Las secciones de configuraci贸n del dispositivo pueden considerarse como los recursos proporcionados por este dispositivo. Los m贸dulos de recursos de red se limitan intencionalmente a un recurso, y se pueden apilar como ladrillos para configurar servicios de red complejos. Como resultado, los requisitos y especificaciones para el m贸dulo de recursos se simplifican naturalmente, porque el m贸dulo de recursos puede leer y configurar un servicio de red espec铆fico en un dispositivo de red.
Para explicar lo que hace el m贸dulo de recursos, veamos un ejemplo de un libro de jugadas que muestra una operaci贸n idempoent usando nuevos hechos de un recurso de red y el m贸dulo eos_l3_interface
.
- name: example of facts being pushed right back to device. hosts: arista gather_facts: false tasks: - name: grab arista eos facts eos_facts: gather_subset: min gather_network_resources: l3_interfaces - name: ensure that the IP address information is accurate eos_l3_interfaces: config: "{{ ansible_network_resources['l3_interfaces'] }}" register: result - name: ensure config did not change assert: that: not result.changed
Como puede ver, los datos recopilados del dispositivo se transfieren directamente al m贸dulo de recursos correspondiente sin conversi贸n. Al inicio, el libro de jugadas recupera los valores del dispositivo y los compara con los esperados. En este ejemplo, los valores obtenidos corresponden a los esperados (es decir, se verifican las desviaciones de configuraci贸n) y se muestra un mensaje si la configuraci贸n ha cambiado.
Una forma ideal de detectar desviaciones de configuraci贸n es almacenar los hechos en variables almacenadas de Ansible y usarlas peri贸dicamente con el m贸dulo de recursos en modo de verificaci贸n. Este es un m茅todo simple para ver si alguien ha cambiado los valores manualmente. En la mayor铆a de los casos, las organizaciones permiten cambios y configuraciones manuales, aunque muchas operaciones se realizan a trav茅s de Ansible Automation.
驴En qu茅 se diferencian los nuevos m贸dulos de recursos de los anteriores?
Para un ingeniero de automatizaci贸n de redes, existen 3 diferencias principales entre los m贸dulos de recursos en Ansible 2.9 de las versiones anteriores.
1) Para un recurso de red espec铆fico (que tambi茅n puede considerarse como una secci贸n de configuraci贸n), los m贸dulos y los hechos se desarrollar谩n en todos los sistemas operativos de red compatibles al mismo tiempo. Creemos que si Ansible admite la configuraci贸n de recursos en una 煤nica plataforma de red, deber铆amos admitirlo en todas partes. Esto simplifica el uso de m贸dulos de recursos, porque un ingeniero de automatizaci贸n de redes ahora puede configurar un recurso (por ejemplo, LLDP) en todos los sistemas operativos de red con m贸dulos nativos y compatibles.
2) Los m贸dulos de recursos ahora incluyen un valor de estado.
merged
: la configuraci贸n se fusiona con la configuraci贸n provista (predeterminada);replaced
: la configuraci贸n del recurso ser谩 reemplazada por la configuraci贸n provista;overridden
: la configuraci贸n del recurso se reemplazar谩 con la configuraci贸n proporcionada; las instancias de exceso de recursos se eliminar谩n;deleted
: la configuraci贸n del recurso se eliminar谩 / restaurar谩 de forma predeterminada.

3) Los m贸dulos de recursos ahora incluyen valores de retorno estables. Cuando el m贸dulo de recursos de red ha realizado (o sugerido) los cambios necesarios en el dispositivo de red, devuelve los mismos pares clave-valor al libro de jugadas.
before
: configuraci贸n en el dispositivo en forma de datos estructurados antes de la tarea;after
: si el dispositivo ha cambiado (o puede cambiar si se usa el modo de verificaci贸n), la configuraci贸n resultante se devolver谩 en forma de datos estructurados;commands
: cualquier comando de configuraci贸n que se ejecute en el dispositivo para llevarlo al estado deseado.


驴Qu茅 significa todo esto? 驴Por qu茅 es esto importante?
Esta publicaci贸n describe muchos conceptos complejos, pero esperamos que al final comprenda mejor que los clientes corporativos solicitan datos, normalizaci贸n de datos y configuraci贸n de bucles para la plataforma de automatizaci贸n. Pero, 驴por qu茅 necesitan estas mejoras? Muchas organizaciones ahora se dedican a la transformaci贸n digital para hacer que sus entornos de TI sean m谩s flexibles y competitivos. Para bien o para mal, muchos ingenieros de redes se convierten en desarrolladores de redes, ya sea por su propio inter茅s o por orden de los gerentes.
Las organizaciones entienden que la automatizaci贸n de plantillas de red individuales no resuelve el problema de fragmentaci贸n y solo aumenta la eficiencia hasta cierto l铆mite. La plataforma de automatizaci贸n de Red Hat Ansible proporciona modelos de datos de recursos rigurosos y normativos para administrar mediante programaci贸n los datos subyacentes en un dispositivo de red. Es decir, los usuarios est谩n abandonando gradualmente los m茅todos de configuraci贸n individuales en favor de m茅todos m谩s modernos con 茅nfasis en las tecnolog铆as (por ejemplo, direcciones IP, VLAN, LLDP, etc.), y no en la implementaci贸n de un proveedor espec铆fico.
驴Significa esto que los d铆as de m贸dulos de comando y configuraciones confiables y probados est谩n contados? De ninguna manera Los m贸dulos de recursos de red esperados no ser谩n aplicables en todos los casos y no para cada proveedor, por lo que los ingenieros de red a煤n necesitar谩n m贸dulos de comando y configuraci贸n para ciertas implementaciones. El prop贸sito de los m贸dulos de recursos es simplificar grandes plantillas Jinja y normalizar configuraciones de dispositivos no estructurados en un formato JSON estructurado. Con los m贸dulos de recursos, ser谩 m谩s f谩cil para las redes existentes transformar su configuraci贸n en pares clave-valor estructurados que ser谩n una fuente de verdad f谩cil de leer. Si utiliza pares estructurados de clave-valor, puede cambiar de configuraciones en ejecuci贸n en cada dispositivo a trabajar con datos estructurados independientes y llevar las redes a la vanguardia con el enfoque de "infraestructura como c贸digo".
驴Qu茅 m贸dulos de recursos aparecer谩n en Ansible Engine 2.9?
Antes de contar en detalle lo que suceder谩 en Ansible 2.9, recordemos c贸mo dividimos la cantidad total de trabajo.
Identificamos 7 categor铆as y cada una asign贸 recursos de red espec铆ficos:

Nota: se planearon e implementaron recursos audaces en Ansible 2.9.
Seg煤n los comentarios de los clientes corporativos y la comunidad, era l贸gico tratar primero con los m贸dulos relacionados con protocolos de topolog铆a de red, virtualizaci贸n e interfaces.
Los siguientes m贸dulos de recursos son desarrollados por el equipo de Ansible Network y corresponden a las plataformas que admite Red Hat:

Los siguientes m贸dulos son desarrollados por la comunidad Ansible:
exos_lldp_global
- de Extreme Networks.nxos_bfd_interfaces
- de Cisconxos_telemetry
- de Cisco
Como puede ver, el concepto de m贸dulos de recursos se ajusta a nuestra estrategia de orientaci贸n de plataforma. Es decir, incluimos las capacidades y funciones necesarias en Ansible, con el fin de apoyar la estandarizaci贸n en el desarrollo de m贸dulos de red, y tambi茅n para simplificar el trabajo de los usuarios a nivel de roles y libros de jugadas de Ansible. Para expandir el desarrollo de los m贸dulos de recursos, el equipo de Ansible lanz贸 la herramienta Module Builder.
Planes para Ansible 2.10 en adelante
Despu茅s del lanzamiento de Ansible 2.9, trataremos con el siguiente conjunto de m贸dulos de recursos para Ansible 2.10, que se pueden utilizar para configurar a煤n m谩s la topolog铆a y la pol铆tica de red, por ejemplo, ACL, OSPF y BGP . El plan de desarrollo a煤n se puede ajustar, as铆 que si tiene comentarios, inf贸rmelo a la comunidad de Ansible Network .
Recursos y primeros pasos
Comunicado de prensa de la plataforma de automatizaci贸n Ansible
Blog de plataforma de automatizaci贸n Ansible
El futuro de la entrega de contenido en Ansible
Reflexiones sobre c贸mo cambiar la estructura del proyecto Ansible