Descripción de Ansible para colecciones y módulos de Junos OS
Obtenga información sobre las colecciones y los módulos de Ansible que puede usar para administrar dispositivos que ejecutan Junos OS y dispositivos que ejecutan Junos OS evolucionado.
Descripción de las colecciones y módulos de Ansible para administrar dispositivos de Junos
Ansible es un marco de automatización de TI que puede utilizar para la administración de la configuración de la infraestructura. Los módulos de Ansible, que son unidades discretas de código, se utilizan para realizar funciones específicas en un nodo administrado. Puede ejecutar módulos individuales en hosts remotos para realizar tareas ad hoc. También puede ejecutar módulos a través de libros de estrategias.
Juniper Networks ofrece módulos de Ansible que puede usar para administrar dispositivos Junos. Los módulos de Ansible se agrupan y distribuyen a través de las colecciones de contenido de Ansible, que se alojan en el repositorio de Ansible Galaxy . Las colecciones de Ansible son un formato para distribuir contenido de Ansible que no se incluye como parte de la instalación principal de Ansible. Las colecciones pueden incluir una amplia gama de contenido, incluidos módulos, libros de estrategias, complementos y roles. Las colecciones también tienen sus propios repositorios, por lo que se pueden desarrollar y publicar independientemente de la instalación principal de Ansible.
En la tabla 1 , se describen los conjuntos de contenido disponibles para administrar dispositivos Junos. Juniper Networks proporciona la juniper.device colección. A partir de juniper.device la versión 2.0.0, consolidamos la colección de Juniper Networks juniper.device y la colección de Red Hat Ansible junipernetworks.junos en una sola colección que contiene ambos conjuntos de módulos.
| Colección | Conjunto de módulos | Descripción |
|---|---|---|
juniper.device |
Módulos para administrar dispositivos Junos. Juniper Networks proporciona y administra esta colección como un proyecto de código abierto. |
|
|
( |
Módulos para administrar dispositivos Junos. En un principio, el equipo de Red Hat Ansible Networking mantuvo esta colección. En |
Descripción de la juniper.device colección combinada
Descripción general de la fusión
Antes de juniper.device la versión 2.0.0, la colección de Juniper Networks juniper.device y la colección de Red Hat Ansible junipernetworks.junos eran colecciones distintas e independientes. Cada propietario de la colección mantuvo su respectiva colección. A partir de juniper.device la versión 2.0.0, fusionamos la junipernetworks.junos colección con la juniper.device colección. Juniper Networks mantiene la colección fusionada en el futuro.
Nos referiremos a la juniper.device colección para indicar el conjunto combinado de módulos. Para distinguir entre los conjuntos de módulos dentro de la colección, nos referiremos a los módulos de la siguiente manera:
-
juniper.devicemódulos ojuniper.devicemódulos originales -
junipernetworks.junosmódulos ojuniper.device.junos_*módulos
Cuando instale la juniper.device colección, puede usarla juniper.device.module_name para ejecutar módulos de cualquiera de los conjuntos de módulos. Para seguir usando los manuales existentes que hacen referencia junipernetworks.junos.module_namea , también debe instalar la junipernetworks.junos colección. Para ejecutar los módulos utilizando cualquiera de los junipernetworks.junos espacios de nombres, debe establecer ansible_network_os en juniper.device.junos. De lo contrario, todo lo demás permanece igual cuando se usa cualquiera de los conjuntos de módulos.
Aunque la juniper.device colección incluye ambos conjuntos de módulos, cada conjunto de módulos utiliza valores de conexión de Ansible y valores de sistema operativo de red diferentes. Como resultado, los dos conjuntos de módulos no pueden utilizar el mismo archivo de inventario y no se pueden mezclar los conjuntos de módulos en el mismo manual. Por lo tanto, le recomendamos que seleccione un conjunto de módulos para utilizarlos en sus playbooks y tareas. El conjunto que seleccione es una cuestión de preferencia. Para ayudarle a determinar qué conjunto de módulos funciona mejor para su entorno, proporcionamos una descripción general de alto nivel y una comparación de los dos conjuntos.
Comparación de conjuntos de módulos
La juniper.device colección y la colección se construyeron originalmente para diferentes propósitos y casos de junipernetworks.junos uso. Juniper Networks diseñó los módulos para proporcionar a los juniper.device usuarios acceso directo a toda la gama de capacidades de Junos OS. Red Hat desarrolló los junipernetworks.junos módulos utilizando un enfoque consistente aplicado a todas las colecciones de redes mantenidas por Red Hat. Este enfoque proporcionó configuraciones con plantillas para una administración de configuración simplificada y repetible.
Aparte de algunas diferencias claras, tanto los juniper.device módulos como los junipernetworks.junos módulos proporcionan funciones similares para administrar dispositivos Junos. Ambos conjuntos de módulos le permiten:
-
Obtén datos sobre el dispositivo
-
Ejecute comandos y RPC en un dispositivo
-
Instalar paquetes de software
-
Ejecute operaciones de ping desde un dispositivo
-
Configurar un dispositivo
Ambos conjuntos de módulos proporcionan opciones similares para configurar dispositivos. Por ejemplo, puede:
-
Cargue los datos de configuración en uno de los formatos aceptados desde un archivo
-
Cargue los datos de configuración como
setcomandos proporcionados en los argumentos del módulo -
Revertir la configuración
-
Reemplace toda la configuración
-
Especifique el formato y la operación de carga para cargar los datos de configuración
-
Confirmar la configuración e incluir opciones de confirmación comunes
Los conjuntos de módulos también tienen algunas diferencias con respecto a las operaciones de configuración. Los junipernetworks.junos módulos proporcionan numerosas plantillas de configuración que le permiten configurar fácilmente instrucciones comunes para áreas específicas de la jerarquía de configuración. Por ejemplo, puede configurar opciones comunes para OSPF o rutas estáticas.
Del mismo modo, los juniper.device módulos proporcionan algunas capacidades de configuración adicionales. Puede comparar configuraciones, cargar la configuración de rescate y cargar datos de configuración mediante una plantilla Jinja2. También puede seleccionar el modo de configuración. Por ejemplo, puede utilizar el modo por lotes; configurar una copia privada de la configuración candidata; o configure la base de datos dinámica o efímera. Los juniper.device módulos también proporcionan opciones de confirmación adicionales para sincronizar la configuración, confirmar los cambios vacíos e ignorar las advertencias de confirmación.
Otra diferencia clave entre los conjuntos de módulos es que los módulos se integran con varios otros productos de juniper.device Juniper Networks. Por ejemplo, sus manuales de estrategia de Ansible pueden hacer referencia a tablas operativas de Junos PyEZ para recuperar datos de estado operativo de un dispositivo. Los playbooks de Ansible también pueden realizar operaciones de administrador de instantáneas de Junos en Python (JSNAPy). JSNAPy le permite capturar y auditar instantáneas del entorno de ejecución de sus dispositivos Junos. Por lo tanto, puede usar sus tablas Junos PyEZ existentes y archivos de configuración y prueba JSNAPy en sus manuales de estrategia de Ansible.
Cómo ejecutar módulos en dispositivos Junos
Para utilizar colecciones alojadas en el repositorio de Ansible Galaxy, primero debe instalar Ansible en el nodo de control y, a continuación, instalar la colección. Para obtener más información acerca de la instalación de la colección, consulte Ansible para requisitos del juniper.device servidor de Junos OS.
Los módulos de Ansible pueden realizar operaciones en un nodo administrado. Normalmente, el nodo de control de Ansible envía un módulo al nodo administrado para realizar la operación. El nodo ejecuta el módulo y, a continuación, lo quita. En este escenario, el nodo administrado debe tener la capacidad de ejecutar el módulo. Dado que la mayoría de los módulos de Ansible están escritos en Python, Ansible suele requerir Python en el nodo administrado.
Sin embargo, los módulos de la juniper.device colección no requieren Python en los nodos administrados. A diferencia de la operación normal, el nodo de control de Ansible ejecuta los módulos localmente. Los módulos utilizan la API XML de Junos y NETCONF para interactuar con el nodo administrado. Este método de ejecución le permite utilizar Ansible para administrar cualquier dispositivo Junos compatible. La figura 1 ilustra la comunicación entre el nodo de control de Ansible y un dispositivo de Junos administrado.
de Junos
Para utilizar los juniper.device módulos o los módulos, el manual de estrategias o el junipernetworks.junos comando de Ansible deben:
-
Especificar la colección o FQCN: para especificar la colección, incluya la
collectionsclave en la reproducción. Como alternativa, puede omitir lacollectionsclave y, en su lugar, hacer referencia al contenido de la colección por su nombre de colección completo (FQCN), que es el método recomendado. -
Ejecutar los módulos localmente en el nodo de control: para ejecutar los módulos de Ansible localmente, debe definir los parámetros de conexión adecuados en el manual de estrategias, el archivo de inventario o las opciones de comando. Defina el
connectionparámetro en el manual o defina elansible_connectionparámetro en el archivo de inventario o en los archivos de variables de host o grupo. Para losjunipernetworks.junosmódulos, también debe especificar elansible_network_osparámetro. Por lo general, este parámetro se define en el archivo de inventario. En la Tabla 2 se describen los valores admitidos.Tabla 2: Parámetros de conexión Conjunto de módulos Manual de jugadas Archivo de inventario juniper.device
(módulos originales)-
connection: (local | juniper.device.pyez)
-
ansible_connection=(local | juniper.device.pyez)
junipernetworks.junos
(Todos losjunos_*módulos, exceptojunos_netconfyjunos_ping)-
connection: netconf
-
ansible_connection=netconf -
ansible_network_os=juniper.device.junos
junipernetworks.junosjunos_netconf( yjunos_ping)-
connection: network_cli
-
ansible_connection=network_cli -
ansible_network_os=juniper.device.junos
-
-
Proporcione la información de conexión y autenticación adecuada para conectarse al dispositivo administrado.
Puede ejecutar módulos de Ansible con cualquier cuenta de usuario que tenga acceso al dispositivo Junos administrado. Cuando ejecute módulos de Ansible, se aplican los privilegios de acceso de la cuenta de usuario de Junos OS. La clase configurada para la cuenta de usuario de Junos OS determina los permisos. Por lo tanto, si un usuario ejecuta un módulo que carga cambios de configuración en un dispositivo, el usuario debe tener permisos para cambiar las partes relevantes de la configuración.
En las siguientes secciones, se proporcionan algunos ejemplos de manuales de estrategia y archivos de inventario para los distintos conjuntos de módulos.
- Ejemplo de manual de estrategias para
juniper.devicemódulos - Archivo de inventario de muestra y manual de estrategias para
junipernetworks.junosmódulos
Manual de estrategias de ejemplo para los módulos de juniper.device
En el siguiente manual, se ejecuta el juniper.device.facts módulo para recuperar los datos del dispositivo y guardarlos en un archivo. En este ejemplo, definimos el tipo de conexión en el manual en lugar del archivo de inventario. El usuario se autentica con el dispositivo mediante claves SSH cargadas en un agente de claves SSH.
---
- name: Get Device Facts
hosts: junos
connection: local
gather_facts: no
tasks:
- name: Retrieve facts from a Junos device
juniper.device.facts:
savedir: "{{ playbook_dir }}"
- name: Print version
ansible.builtin.debug:
var: junos.version
También puede realizar operaciones ad hoc en la línea de comandos. El siguiente comando ejecuta el módulo y recupera la juniper.device.facts información del dispositivo de los hosts del grupo junosde inventario.
user@ansible-cn:~$ ansible --connection local -i production junos -m juniper.device.facts
Archivo de inventario de muestra y manual de estrategias para los módulos de junipernetworks.junos
Si utiliza el conjunto de junipernetworks.junos módulos, puede definir las variables y ansible_network_os en el archivo de inventario o en los ansible_connection archivos de variables de host o grupo. El siguiente archivo de inventario de ejemplo define los parámetros de conexión para el grupo dc1 en dc1:vars.
[dc1] switch1.example.com [dc1:vars] ansible_connection=netconf ansible_network_os=juniper.device.junos
El siguiente manual ejecuta el junipernetworks.junos.junos_facts módulo en el espacio de juniper.device nombres. El manual hace referencia al dc1 grupo, que define los valores de conexión y sistema operativo de red adecuados en el archivo de inventario.
- name: Get Device Facts
hosts: dc1
gather_facts: no
tasks:
- name: Retrieve facts from a Junos device
juniper.device.junos_facts:
register: response
- name: Print version
ansible.builtin.debug:
var: response.ansible_facts.ansible_net_version
Módulos de juniper.device
La Tabla 3 describe los módulos originales juniper.device de la juniper.device colección. Para obtener la lista actual de módulos, la documentación y los ejemplos de uso de los módulos, consulte https://ansible-juniper-collection.readthedocs.io.
|
Nombre del módulo |
Descripción |
Conexiones de Ansible compatibles |
|---|---|---|
|
|
Ejecute comandos de modo operativo en el dispositivo Junos y guarde la salida localmente. |
|
|
|
Administre la configuración de los dispositivos Junos. |
|
|
|
Recupere información específica del dispositivo del host remoto, como la versión de Junos OS, el número de serie y el número de modelo de hardware. |
|
|
|
Transfiera un archivo entre el nodo de control de Ansible local y el dispositivo de Junos. |
|
|
|
Ejecute pruebas de Junos Snapshot Administrator en Python (JSNAPy) a través de Ansible. |
|
|
|
Ejecute el |
|
|
|
Realice la detección de UMT de ruta (PMTUD) en dispositivos Junos. |
|
|
|
Ejecute RPC de Junos OS. |
|
|
|
Instalar un paquete de software y reiniciar un dispositivo Junos. |
|
|
|
Cree un clúster de chasis de la serie SRX para firewalls de la serie SRX compatibles con clústeres. |
|
|
|
Realice operaciones del sistema en dispositivos Junos, incluido el restablecimiento, el reinicio o el apagado del dispositivo. |
|
|
|
Use las tablas y vistas operativas de Junos PyEZ para recuperar información operativa de los dispositivos Junos. |
|
junipernetworks.junos Módulos
A partir de juniper.device la versión 2.0.0, la juniper.device colección incluye los junipernetworks.junos módulos. En la Tabla 4 se describen los junipernetworks.junos módulos de la juniper.device colección. El conjunto de módulos le permite realizar tareas operativas. También incluye muchos módulos de plantillas de configuración que configuran ajustes comunes para varias características, protocolos y servicios en dispositivos Junos.
| Nombre del módulo | Descripción | Conexiones de Ansible compatibles |
|---|---|---|
| Módulos operativos | ||
|
|
Ejecute comandos del modo operativo en el dispositivo Junos. |
|
|
|
Recupere información específica del dispositivo del host remoto. |
|
|
|
Instalar un paquete de software y reiniciar un dispositivo Junos. |
|
|
|
Ejecute el |
|
|
|
Ejecute RPC de Junos OS mediante NETCONF en un dispositivo Junos. |
|
| Módulos de configuración | ||
|
|
Aplique filtros de firewall en una interfaz. |
|
|
|
Configure filtros de firewall, a veces denominados listas de control de acceso (ACL). |
|
|
|
Configure los banners. |
|
|
|
Administre los atributos de familia de direcciones BGP de las interfaces. |
|
|
|
Configure las propiedades globales del BGP. |
|
|
|
Administre la configuración de los dispositivos Junos. |
|
|
|
Configure el nombre de host del dispositivo. |
|
|
|
Configure las propiedades físicas y lógicas básicas de la interfaz. |
|
|
|
Configure interfaces L2. |
|
|
|
Configure interfaces L3. |
|
|
|
Configure las propiedades del protocolo de control de agregación de vínculos (LACP) global para las interfaces de Ethernet agregadas. |
|
|
|
Administre los atributos LACP de una interfaz. |
|
|
|
Configure los grupos de agregación de vínculos (LAG). |
|
|
|
Configure las opciones globales para el protocolo de detección de capa de vínculo (LLDP). |
|
|
|
Administre los atributos LLDP de una interfaz. |
|
|
|
Configure el registro del sistema. |
|
|
|
Configure el servicio del sistema NETCONF. |
|
|
|
Configure el protocolo de tiempo de red (NTP). |
|
|
|
Administre la configuración de interfaces de OSPF. |
|
|
|
Configure OSPFv2. |
|
|
|
Configure OSPFv3. |
|
|
|
Configure listas de prefijos de política de enrutamiento. |
|
|
|
Configure instancias de enrutamiento. |
|
|
|
Configure las opciones de enrutamiento. |
|
|
|
Configure y gestione las políticas de seguridad. |
|
|
|
Configure las opciones de la política de seguridad global. |
|
|
|
Configure las zonas de seguridad. |
|
|
|
Gestione la configuración del servidor SNMP. |
|
|
|
Configure rutas estáticas. |
|
|
|
Administre el nombre de host y la configuración de DNS. |
|
|
|
Configure cuentas de usuario locales. |
|
|
|
Configure las VLAN. |
|
|
|
Administre las definiciones de VRF en el dispositivo. |
|