Crear y ejecutar manuales de Ansible para administrar dispositivos Junos
Puede crear manuales de estrategia de Ansible que ejecuten módulos de Juniper Networks para realizar tareas operativas y de configuración en dispositivos que ejecutan Junos OS y dispositivos que ejecutan Junos OS evolucionado.
Juniper Networks ofrece módulos de Ansible que le permiten realizar tareas operativas y de configuración en dispositivos Junos. En este tema, se describe cómo crear un manual de estrategia sencillo de Ansible para ejecutar los módulos de Juniper Networks en dispositivos Junos.
Descripción general del libro de jugadas
Puede crear manuales de estrategia de Ansible para gestionar tareas de gestión más complejas. Los libros de estrategia constan de una o más jugadas, o grupos de tareas, que funcionan en un conjunto de hosts definidos. Cada jugada del manual debe especificar:
-
Los hosts en los que operan las tareas
-
La lista de tareas que se deben ejecutar en cada host
-
Cualquier variable o parámetro de módulo necesario, incluidos los parámetros de autenticación, si no los ha definido en otra parte
Cualquier host de Ansible al que haga referencia un manual debe definirse en el archivo de inventario de Ansible. La ubicación predeterminada del archivo de inventario de Ansible es /etc/ansible/hosts.
Un manual ejecuta tareas en un host llamando a módulos. Los módulos de Ansible de Juniper Networks se distribuyen a través de la juniper.device colección, que está alojada en Ansible Galaxy. Para utilizar los módulos de Juniper Networks en su manual, debe instalar la colección en el nodo de control de Ansible. Para obtener más información acerca de la colección y los módulos, consulte Descripción de Ansible para colecciones y módulos de Junos OS.
Los módulos de Juniper Networks no requieren Python en dispositivos Junos porque usan la API XML de Junos y NETCONF para interactuar con el dispositivo. Por lo tanto, para realizar operaciones en dispositivos Junos, debe ejecutar los módulos localmente en el nodo de control de Ansible, donde está instalado Python. Puede ejecutar los módulos localmente definiendo la conexión de Ansible adecuada y los parámetros del sistema operativo de red. Para obtener información acerca de los parámetros y valores de conexión de los módulos de la juniper.device colección, consulte Cómo ejecutar módulos en dispositivos Junos.
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 hechos para el nodo de control, inclúyalo gather_facts: no en el manual de estrategias.
Cuando ejecute los módulos de Juniper Networks con una sesión de NETCONF a través de SSH, el dispositivo de Junos debe tener NETCONF habilitado. Le recomendamos que cree una tarea sencilla en el manual de estrategias que pruebe explícitamente si NETCONF está habilitado en cada dispositivo antes de ejecutar otras tareas. Si esta tarea falla para algún 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 libro de estrategias que no indica si este problema u otro problema es la causa de los errores.
Los libros de estrategia se escriben en formato YAML. YAML es sensible a los espacios en blanco y la sangría es significativa. Por lo tanto, los libros de estrategias siempre deben usar espacios en lugar de pestañas. En YAML, los elementos precedidos por un guión (-) son elementos de lista y la key: value notación representa un hash. Para obtener información detallada sobre cómo crear manuales de estrategia de Ansible, consulte la documentación oficial de Ansible en https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks.html.
Crear un manual de estrategias de Ansible
Antes de empezar:
-
Elija el conjunto de módulos que usará para administrar los dispositivos de Junos. La
juniper.devicecolección incluye losjuniper.devicemódulos originales y losjunipernetworks.junosmódulos. -
Actualice el archivo de inventario con las variables de conexión de Ansible y del sistema operativo de red adecuadas para el conjunto de módulos, tal y como se describe en Descripción del archivo de inventario de Ansible al administrar dispositivos Junos.
Para crear un manual sencillo para realizar tareas en dispositivos Junos:
Ejecute el manual
En el manual de este ejemplo, se utiliza el siguiente archivo de inventario de Ansible, que define la conexión como local.
[dc1] dc1a.example.com ansible_host=198.51.100.1 [dc1:vars] ansible_connection=local
Para ejecutar el manual de estrategias:
-
Emita el
ansible-playbookcomando en el nodo de control y proporcione la ruta del manual de estrategias y las opciones necesarias.user@ansible-cn:~$ ansible-playbook junos-get-facts.yaml PLAY [Get Device Facts] *************************************************** TASK [Check NETCONF connectivity] ***************************************** ok: [dc1a.example.net] TASK [Retrieve information from Junos devices] **************************** ok: [dc1a.example.net] TASK [Print version] ****************************************************** ok: [dc1a.example.net] => { "junos.version": "19.4R1.10" } PLAY RECAP **************************************************************** dc1a.example.net : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0