Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Creación y ejecución de libros de Ansible para administrar dispositivos que ejecutan Junos OS

RESUMEN  Puede crear libros de Ansible que ejecutan módulos de Juniper Networks para realizar tareas operativas y de configuración en dispositivos que ejecutan Junos OS.

Juniper Networks admite el uso de Ansible para administrar dispositivos que ejecutan Junos OS, 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 que ejecutan Junos OS.

Usted crea libros de Ansible para manejar tareas de administración más complejas. Los libros de jugadas constan de una o más jugadas, o grupos de tareas, que funcionan en un conjunto de hosts definidos. Los hosts de Ansible a los que se hace referencia en el manual de estrategias deben estar definidos en el archivo de inventario de Ansible, que de forma predeterminada reside en /etc/ansible/hosts. Cada reproducción debe especificar:

  • Los hosts en los que operan las tareas

  • La lista de tareas que se ejecutarán en cada host

  • Todas las variables o parámetros de módulo necesarios, incluidos los parámetros de autenticación, si estos no están definidos en otra parte

Los módulos de Juniper Networks Ansible se distribuyen a través de la juniper.device colección y el Juniper.junos rol, que se alojan en Ansible Galaxy. Para usar los módulos de Juniper Networks en su libro de estrategias, 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 dispositivos que ejecutan Junos OS, ya que utilizan Junos PyEZ y la API de Junos XML a través de NETCONF para interactuar con el dispositivo. Por lo tanto, para realizar operaciones en dispositivos que ejecutan Junos OS, 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 de estrategias. Cuando se utiliza connection: local, Ansible establece una conexión independiente al host para cada tarea en la reproducción que requiere una conexión. Los juniper.device módulos de recopilación también admiten connection: juniper.device.pyez, que aún ejecuta los módulos localmente en el nodo de control de Ansible, pero en su lugar establece una conexión con el host que persiste durante la ejecución de todas las tareas en una reproducción.

De forma predeterminada, Ansible juega recopilando automáticamente datos del sistema desde el host remoto. Sin embargo, cuando se ejecutan las reproducciones localmente, Ansible recopila los hechos desde el nodo de control de Ansible en lugar del host remoto. Para evitar reunir datos para el nodo de control, incluya gather_facts: no en el libro de estrategias.

Cuando ejecuta los módulos de Juniper Networks mediante una sesión NETCONF mediante SSH, que es el valor predeterminado, debe tener habilitado NETCONF en el dispositivo que ejecuta Junos OS. Recomendamos que cree una tarea simple en el libro de estrategias que prueba explícitamente si NETCONF está habilitado en cada dispositivo antes de ejecutar otras tareas. Si esta tarea falla en cualquier host, de forma predeterminada, Ansible no ejecuta las tareas restantes para este host. Sin esta prueba, es posible que reciba un error de conexión genérico durante la ejecución del manual de jugadas que no indique si este u otro problema es la causa de los errores.

Los libros de jugadas están expresados en YAML. Dado que YAML es sensible al espacio en blanco y la sangría es significativa, siempre debe usar espacios en lugar de pestañas al crear libros de jugadas. 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 cómo crear libros de jugadas 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 de estrategias simple que ejecute módulos de Ansible en un dispositivo que ejecuta Junos OS.

Creación de un manual de estrategias

Para crear un manual de estrategias sencillo para realizar tareas en dispositivos que ejecutan Junos OS:

  1. En su editor favorito, cree un archivo nuevo con un nombre descriptivo de manual 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 funcionará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 hace referencia en el libro de estrategias deben estar definidos 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, ya que no hay ningún requisito para Python en dispositivos que ejecutan Junos OS.
    • Incluya connection: local para ejecutar tareas localmente, pero establezca una conexión independiente con el host para cada tarea en juego que requiera una conexión.

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

    El resto de los pasos utilizan connection: local. Para usar los módulos de juniper.device recopilación con una conexión persistente, actualice el manual final para usar connection: juniper.device.pyez.

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

    • En los nodos de control de Ansible que tengan la Juniper.junos función instalada, incluya la función.

    El resto de los pasos utilizan los nombres de la colección y de los juniper.device módulos. Para usar el Juniper.junos rol, actualice el libro de estrategias final para usar los nombres de módulos y roles.

  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 comprobar la conectividad NETCONF para cada dispositivo que ejecuta Junos OS.
  10. Cree tareas que usen los módulos de Juniper Networks y proporcione los parámetros de conexión y autenticación necesarios.

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

  11. (Opcional) Defina jugadas adicionales según sea necesario mediante la repetición de los pasos del 3 al 10.

Ejecución del libro de estrategias

Para ejecutar el manual:

  • Emita el ansible-playbook comando en el nodo de control y proporcione la ruta del libro de estrategias y las opciones deseadas.