Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Crear y ejecutar manuales de Ansible para administrar dispositivos Junos

RESUMEN Puede crear manuales de estrategia de Ansible que ejecuten módulos de Juniper Networks para realizar tareas operativas y de configuración en dispositivos Junos.

Juniper Networks admite el uso de Ansible para administrar dispositivos Junos, y Ansible y Juniper Networks proporcionan módulos de Ansible que le permiten realizar tareas operativas y de configuración en los dispositivos. En este tema se describe cómo crear un manual de Ansible sencillo para ejecutar módulos de Juniper Networks en dispositivos Junos.

Puede crear manuales de estrategia de Ansible para gestionar tareas de administración más complejas. Los cuadernos de estrategias consisten en una o más jugadas, o grupos de tareas, que operan en un conjunto de hosts definidos. Los hosts de Ansible a los que se hace referencia en el manual de estrategias deben definirse en el archivo de inventario de Ansible, que de forma predeterminada reside en / etc/ansible/hosts. Cada jugada debe especificar:

  • Los hosts en los que operan las tareas

  • La lista de tareas a ejecutar en cada host

  • Cualquier variable o parámetro de módulo requerido, incluidos los parámetros de autenticación, si no están definidos en otro lugar

Los módulos de Ansible de Juniper Networks se distribuyen a través de la colección y el juniper.device Juniper.junos rol, que se alojan en Ansible Galaxy. Para usar los módulos de Juniper Networks en su manual, debe instalar la colección o el rol en el nodo de control de Ansible. Para obtener más información acerca de la colección, el rol y los módulos de Juniper Networks, consulte Descripción de Ansible para colecciones, roles y módulos de Junos OS.

Los módulos de Juniper Networks no requieren Python en los dispositivos Junos, ya que usan Junos PyEZ y la API XML de Junos a través de NETCONF para interactuar con el dispositivo. Por lo tanto, para realizar operaciones en dispositivos Junos, debe ejecutar módulos localmente en el nodo de control de Ansible, donde está instalado Python. Puede ejecutar los módulos localmente incluyéndolos connection: local en el juego del manual. Cuando se utiliza connection: local, Ansible establece una conexión independiente con el host para cada tarea de la reproducción que requiera una conexión. Los juniper.device módulos de colección también admiten connection: juniper.device.pyez, que sigue ejecutando los módulos localmente en el nodo de control de Ansible, pero en su lugar establece una conexión con el host que persiste en la ejecución de todas las tareas de una reproducción.

De forma predeterminada, las reproducciones de Ansible recopilan automáticamente datos del sistema del host remoto. Sin embargo, cuando ejecuta las jugadas localmente, Ansible recopila los hechos del nodo de control de Ansible en lugar del host remoto. Para evitar recopilar datos para el nodo de control, inclúyalos gather_facts: no en el manual.

Cuando ejecute los módulos de Juniper Networks mediante una sesión NETCONF a través de SSH, que es la opción predeterminada, debe tener NETCONF habilitada en el dispositivo Junos. Le recomendamos que cree una tarea sencilla en el manual que pruebe explícitamente si NETCONF está habilitada en cada dispositivo antes de ejecutar otras tareas. Si se produce un error en esta tarea para cualquier host, de forma predeterminada, Ansible no ejecuta las tareas restantes para este host. Sin esta prueba, es posible que obtenga un error de conexión genérico durante la ejecución del manual que no indica si este u otro problema es la causa de algún error.

Los libros de estrategias se expresan en YAML. Debido a que YAML es sensible al espacio en blanco y la sangría es significativa, siempre debe usar espacios en lugar de tabulaciones al crear cuadernos. En YAML, los elementos precedidos por un guión (-) se consideran elementos de lista y la key: value notación representa un hash. Para obtener información detallada sobre la creación de playbooks de Ansible, consulte la documentación oficial de Ansible en https://docs.ansible.com/ansible/latest/user_guide/playbooks.html .

En las siguientes secciones se describen los pasos para crear y ejecutar un manual sencillo que ejecute módulos de Ansible en un dispositivo Junos.

Crear un cuaderno de estrategias

Para crear un manual sencillo para realizar tareas en dispositivos Junos:

  1. En su editor favorito, cree un nuevo archivo con un nombre de libro de estrategias descriptivo que use la extensión de archivo .yaml.
  2. Incluya tres guiones para indicar el inicio del documento YAML.
  3. Proporcione un nombre descriptivo para la obra.
  4. Defina una lista delimitada por dos puntos de los hosts o grupos de hosts en los que operarán los módulos, o especifique all para indicar todos los hosts en el archivo de inventario.

    Todos los hosts o grupos a los que se haga referencia en el manual deben definirse en el archivo de inventario de Ansible.

  5. Indique a Ansible que ejecute las tareas de la reproducción localmente en el nodo de control de Ansible donde está instalado Python porque no hay ningún requisito para Python en dispositivos Junos.
    • Incluye connection: local para ejecutar tareas localmente, pero establecer una conexión independiente con el host para cada tarea de la reproducción que requiera una conexión.

    • Incluye connection: juniper.device.pyez para ejecutar tareas localmente, pero establecer una conexión persistente con el host que persista en la ejecución de todas las tareas de la reproducción. Este tipo de conexión solo es compatible con los módulos de juniper.device recopilación.

    Los pasos restantes utilizan connection: local. Para utilizar los módulos de juniper.device colección con una conexión persistente, actualice el cuaderno de estrategias final para que utilice connection: juniper.device.pyez.

  6. (Opcional) Incluya gather_facts: no para evitar recopilar datos para el host de destino, que para las conexiones locales es el nodo de control de Ansible.
  7. Haga referencia a la colección o al Juniper.junos rol, según corresponda a juniper.device su configuración de Ansible.
    • En los nodos de control de Ansible que ejecutan Ansible 2.10 o posterior y que tienen instalada la colección, el método recomendado es omitir la clave y, en su lugar, hacer referencia al contenido de la juniper.device collections colección mediante su nombre de colección completo (FQCN).

    • En los nodos de control de Ansible que tengan el rol instalado, incluya el Juniper.junos rol.

    Los pasos restantes utilizan los nombres de juniper.device colección y módulo. Para usar el rol, actualice el Juniper.junos manual final para usar los nombres de módulo de rol y rol.

  8. Defina una sección de tareas e incluya una o más tareas como elementos de lista.
  9. (Opcional) Como comprobación adicional, cree una tarea para verificar la conectividad de NETCONF para cada dispositivo Junos.
  10. Cree tareas que utilicen los módulos de Juniper Networks y proporcione los parámetros de conexión y autenticación necesarios.

    En este ejemplo se utilizan claves SSH existentes en la ubicación predeterminada y no se proporcionan explícitamente las credenciales para el módulo en el facts manual.

  11. (Opcional) Defina jugadas adicionales según sea necesario repitiendo los pasos 3 a 10.

Ejecute el libro de estrategias

Para ejecutar el manual:

  • Ejecute el comando en el ansible-playbook nodo de control y proporcione la ruta del manual y las opciones deseadas.