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 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 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

Acerca del proyecto

Role for managing EOS Routemaps and IPv4 static routing configuration

Instalar
ansible-galaxy install arista.eos-route-control
Licencia
bsd-3-clause
Descargas
12k
Propietario
Applications developed and supported by Arista EOS+