arista.eos-route-control
Rol de Control de Rutas para EOS
El rol arista.eos-route-control crea una abstracción para la configuración común de políticas de enrutamiento en EOS. Esto significa que no necesitas escribir ninguna tarea de Ansible. Simplemente crea un objeto que cumpla con los requisitos a continuación y este rol lo procesará y realizará la configuración necesaria.
Este rol se utiliza para configurar mapas de ruta y rutas estáticas IPv4.
Instalación
ansible-galaxy install arista.eos-route-control
Requisitos
Requiere una conexión SSH para conectarse a tu dispositivo Arista. Puedes usar cualquiera de las variables de conexión de eos integradas, o el diccionario de conveniencia provider
.
Variables del Rol
Las tareas en este rol están impulsadas por los objetos routemaps
y ipv4_static_routes
descritos a continuación:
routemaps (lista) cada entrada contiene las siguientes claves:
Clave | Tipo | Notas |
---|---|---|
name | cadena (requerido) | El nombre del mapa de ruta a gestionar. |
action | opciones: permitir, denegar (requerido) | La acción asociada con el nombre del mapa de ruta. |
seqno | int (requerido) | El número de secuencia de la regla a la que corresponde esta entrada. |
description | cadena | La descripción para esta entrada del mapa de ruta. |
match | lista | La lista de declaraciones de coincidencia que definen la entrada del mapa de ruta. Las declaraciones de coincidencia deben ser una lista de declaraciones sin la palabra 'match' al principio de la cadena. |
set | lista | La lista de declaraciones de configuración que definen la entrada del mapa de ruta. Las declaraciones de configuración deben ser una lista de declaraciones sin la palabra 'set' al principio de la cadena. |
continue | int | La declaración que define la siguiente cláusula del mapa de ruta a evaluar. |
state | opciones: presente*, ausente | Establece el estado para la configuración del mapa de ruta. |
ipv4_static_routes (lista) cada entrada contiene las siguientes claves:
Clave | Tipo | Notas |
---|---|---|
ip_dest | cadena (requerido) | Dirección IP o red de destino. |
next_hop | cadena (requerido) | El siguiente salto asociado con la ruta. |
next_hop_ip | cadena | Dirección IP del siguiente enrutador. Solo válida cuando next_hop es una interfaz de salida. |
distance | int | Distancia designada para esta ruta. Predeterminado a 1 si el estado es 'presente'. |
tag | int | Etiqueta asignada para la ruta. Predeterminado a 0 si el estado es 'presente'. |
route_name | cadena | Nombre descriptivo para la ruta |
state | opciones: presente*, ausente | Establece el estado para la configuración de la ruta. |
Nota: El asterisco (*) denota el valor predeterminado si no se especifica nada.
Variables de Configuración
Clave | Opciones | Descripción |
---|---|---|
eos_save_running_config | verdadero*, falso | Especifica si se deben escribir los cambios en el running-config resultantes de la ejecución del rol en la memoria, copiando la configuración en el startup-config. |
Nota: El asterisco (*) denota el valor predeterminado si no se especifica nada.
Variables de Conexión
Los roles de Ansible EOS requieren la siguiente información de conexión para establecer comunicación con los nodos en tu inventario. Esta información puede existir en los directorios group_vars o host_vars de Ansible, o en el propio playbook.
Clave | Requerido | Opciones | Descripción |
---|---|---|---|
host | sí | Especifica el nombre de host DNS o dirección para conectar con el dispositivo remoto a través del transporte especificado. El valor de host se usa como la dirección de destino para el transporte. | |
port | no | Especifica el puerto a utilizar al construir la conexión con el dispositivo remoto. Este valor se aplica a cualquiera de los valores aceptables de transporte. El valor del puerto predeterminará al puerto común apropiado si no se proporciona ninguno en la tarea (cli=22, http=80, https=443). | |
username | no | Configura el nombre de usuario que se utilizará para autenticar la conexión al dispositivo remoto. El valor de username se usa para autenticar el inicio de sesión del CLI o la autenticación eAPI dependiendo del transporte utilizado. Si no se especifica el valor en la tarea, se utilizará el valor de la variable de entorno ANSIBLE_NET_USERNAME. | |
password | no | Especifica la contraseña que se utilizará para autenticar la conexión al dispositivo remoto. Este es un argumento común utilizado para cualquiera de los valores aceptables de transporte. Si no se especifica el valor en la tarea, se utilizará el valor de la variable de entorno ANSIBLE_NET_PASSWORD. | |
ssh_keyfile | no | Especifica el archivo de clave SSH que se utilizará para autenticar la conexión al dispositivo remoto. Este argumento solo se utiliza cuando transport=cli. Si no se especifica el valor en la tarea, se utilizará el valor de la variable de entorno ANSIBLE_NET_SSH_KEYFILE. | |
authorize | no | sí, no* | Indica al módulo que entre en modo privilegiado en el dispositivo remoto antes de enviar cualquier comando. Si no se especifica, el dispositivo intentará ejecutar todos los comandos en modo no privilegiado. Si no se especifica el valor en la tarea, se utilizará el valor de la variable de entorno ANSIBLE_NET_AUTHORIZE. |
auth_pass | no | Especifica la contraseña que se utilizará si se requiere entrar en modo privilegiado en el dispositivo remoto. Si authorize=no, entonces este argumento no hace nada. Si no se especifica el valor en la tarea, se utilizará el valor de la variable de entorno ANSIBLE_NET_AUTH_PASS. | |
transport | sí | cli*, eapi | Configura el transporte de conexión a utilizar al conectarse al dispositivo remoto. El argumento transport admite conectividad al dispositivo a través de cli (ssh) o eapi. |
use_ssl | no | sí*, no | Configura el transporte para utilizar SSL si se establece en verdadero solo cuando transport=eapi. Si transport=cli, este valor se ignora. |
provider | no | Método de conveniencia que permite que todos los argumentos de conexión anteriores se pasen como un objeto dict. Todas las restricciones (requeridas, opciones, etc.) deben cumplirse ya sea por argumentos individuales o valores en este dict. |
Nota: El asterisco (*) denota el valor predeterminado si no se especifica nada.
Variables de Ansible
Clave | Opciones | Descripción |
---|---|---|
no_log | verdadero, falso* | Previene que los argumentos y resultados del módulo se registren durante la ejecución del playbook. Por defecto, no_log se estableció en verdadero para las tareas que recogen y guardan información de configuración de EOS para reducir el tamaño de salida. Establezca en verdadero para evitar toda salida excepto los resultados de las tareas. |
Nota: El asterisco (*) denota el valor predeterminado si no se especifica nada.
Dependencias
El rol eos-route-control se basa en módulos incluidos en el código base de Ansible. Estos módulos se agregaron en la versión 2.1 de Ansible.
- Ansible 2.1.0
Ejemplo de Playbook
El siguiente ejemplo utilizará el rol arista.eos-route-control para configurar un mapa de ruta y una ruta estática. Crearemos un archivo hosts
con nuestro switch, luego un archivo host_vars
correspondiente y luego un simple playbook que solo hace referencia al rol eos-route-control.
Al incluir el rol, automáticamente tenemos acceso a todas las tareas para configurar estas características de EOS. Lo bueno de esto es que si tienes un host sin ninguna configuración correspondiente, las tareas se omitirán sin ningún problema.
Ejemplo de archivo hosts:
[leafs]
leaf1.example.com
Ejemplo de host_vars/leaf1.example.com
provider:
host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli
routemaps:
- name: RM-1
action: permit
seqno: 10
description: Mi maravilloso mapa de ruta
match:
- as 1000
- source-protocol bgp
continue: 20
- name: RM-1
action: permit
seqno: 20
description: Mi maravilloso mapa de ruta
set:
- distance 50
- tag 100
ipv4_static_routes:
- ip_dest: 0.0.0.0/0
next_hop: Management1
next_hop_ip: 172.16.130.2
route_name: Predeterminado
tag: 100
Un simple playbook, leaf.yml
- hosts: leafs
roles:
- arista.eos-route-control
Luego ejecuta con:
ansible-playbook -i hosts leaf.yml
Información para Desarrolladores
Las contribuciones al desarrollo son bienvenidas. Consulta Directrices de Desarrollo de Roles de Arista para Ansible (test/arista-ansible-role-test/README) para obtener información adicional, incluyendo cómo desarrollar y ejecutar pruebas para el desarrollo del rol.
Licencia
Copyright (c) 2015, Arista Networks EOS+ Todos los derechos reservados.
La redistribución y uso en formas de origen y binario, con o sin modificación, están permitidos siempre que se cumplan las siguientes condiciones:
Las redistribuciones del código fuente deben retener el aviso de copyright anterior, esta lista de condiciones y el siguiente descargo de responsabilidad.
Las redistribuciones en forma binaria deben reproducir el aviso de copyright anterior, esta lista de condiciones y el siguiente descargo de responsabilidad en la documentación y/o otros materiales proporcionados con la distribución.
Ni el nombre de Arista ni los nombres de sus contribuyentes pueden usarse para promover productos derivados de este software sin un permiso previo por escrito específico.
ESTE SOFTWARE SE PROPORCIONA POR LOS TITULARES DE LOS DERECHOS DE AUTOR Y COLABORADORES "TAL CUAL" Y CUALQUIER GARANTÍA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO SIN LIMITACIÓN A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN PARA UN PROPÓSITO PARTICULAR SON DESCARTADAS. EN NINGÚN CASO EL TITULAR DEL COPYRIGHT O LOS COLABORADORES SERÁN RESPONSABLES POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO SIN LIMITACIÓN A, LA ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTOS; PÉRDIDA DE USO, DATOS O GANANCIAS; O INTERrupción DE NEGOCIO) DE CUALQUIER TIPO Y BAJO CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA EN CONTRATO, RESPONSABILIDAD ESTRICTA O DELICTO (INCLUYENDO NEGLIGENCIA O DE OTRA MANERA) QUE SURJA DE CUALQUIER MANERA DEL USO DE ESTE SOFTWARE, AUNQUE SE HAYA ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS.
Información del Autor
Por favor, reporta cualquier problema usando nuestro repositorio de GitHub o envíanos un correo a ansible-dev@arista.com
Role for managing EOS Routemaps and IPv4 static routing configuration
ansible-galaxy install arista.eos-route-control