arista.eos-mlag
Rol MLAG para EOS
El rol arista.eos-mlag crea una abstracción para la configuración común de MLAG. 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 procesará ese objeto y realizará la configuración necesaria.
Instalación
ansible-galaxy install arista.eos-mlag
Requisitos
Se requiere una conexión SSH para conectarse a tu dispositivo Arista. Puedes usar cualquiera de las variables de conexión EOS incorporadas, o el diccionario de conveniencia provider
.
Variables del Rol
El diccionario mlag
incluye las siguientes claves descritas a continuación:
Clave | Tipo | Notas |
---|---|---|
mlag_domain_id | cadena | El nombre del Dominio MLAG |
mlag_trunk_group | cadena | Grupo trunk asignado a la VLAN |
mlag_shutdown | booleano: true, false* | Habilitar o deshabilitar la configuración MLAG |
local_if_vlan | cadena (requerida) | La VLAN para el enlace entre pares, ej. Vlan1024 |
local_if_vlan_description | cadena | Descripción para local_if_vlan |
local_if_ip_address | cadena (requerida) | Dirección IP para local_if_vlan |
local_if_disable_spanning_tree | booleano: true*, false | Habilitar o deshabilitar STP en la VLAN par |
peer_address | cadena (requerida) | Dirección IP para el par MLAG |
peer_link_if | cadena (requerida) | El Port-Channel usado para el enlace entre pares |
peer_link_mode | opciones: trunk*, access | El modo del switchport para el enlace entre pares |
peer_link_lacp_mode | opciones: active*, passive, disabled | El modo LACP para cada miembro del Port-Channel. |
peer_link_enable | booleano: true*, false | Habilitar o deshabilitar las interfaces del miembro del enlace par |
peer_link_members | (Lista) | Lista de interfaces que forman el enlace entre pares. |
estado | booleano: present*, absent | Si se debe añadir o eliminar toda la configuración relacionada con mlag. Cuando se establece en 'absent', se eliminará toda la configuración, incluyendo local_if_vlan y peer_link_if, y el bloque de configuración mlag volverá a los valores predeterminados. Las interfaces en peer_link_members se restablecerán a la configuración predeterminada del switchport. |
Nota: El asterisco (*) indica el valor predeterminado si no se especifica nada.
Variables de Configuración
Clave | Opciones | Descripción |
---|---|---|
eos_save_running_config | true*, false | Especifica si se deben guardar cambios en la configuración en ejecución resultantes de la ejecución del rol en la memoria, copiando la configuración a la configuración de inicio. |
Nota: El asterisco (*) indica 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 conectarse al dispositivo remoto sobre el transporte especificado. El valor de host se utiliza como dirección de destino para el transporte. | |
port | no | Especifica el puerto a usar al establecer la conexión con el dispositivo remoto. Este valor se aplica a cualquier valor aceptable de transporte. El valor de puerto se ajustará al puerto común apropiado si no se proporciona en la tarea (cli=22, http=80, https=443). | |
username | no | Configura el nombre de usuario para autenticar la conexión al dispositivo remoto. El valor de username se usa para autenticar el inicio de sesión CLI o la autenticación eAPI dependiendo de qué transporte se use. Si no se especifica valor en la tarea, se usará el valor de la variable de entorno ANSIBLE_NET_USERNAME. | |
password | no | Especifica la contraseña para autenticar la conexión al dispositivo remoto. Este es un argumento común utilizado para cualquier valor aceptable de transporte. Si no se especifica valor en la tarea, se usará el valor de la variable de entorno ANSIBLE_NET_PASSWORD. | |
ssh_keyfile | no | Especifica el archivo clave SSH a usar para autenticar la conexión al dispositivo remoto. Este argumento solo se usa cuando transport=cli. Si no se especifica valor en la tarea, se usará 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 valor en la tarea, se usará el valor de la variable de entorno ANSIBLE_NET_AUTHORIZE. |
auth_pass | no | Especifica la contraseña a usar si se requiere ingresar al modo privilegiado en el dispositivo remoto. Si authorize=no, entonces este argumento no tiene efecto. Si no se especifica valor en la tarea, se usará el valor de la variable de entorno ANSIBLE_NET_AUTH_PASS. | |
transport | sí | cli*, eapi | Configura la conexión de transporte a utilizar al conectarse al dispositivo remoto. El argumento transport admite la conectividad al dispositivo a través de cli (ssh) o eapi. |
use_ssl | no | sí*, no | Configura el transporte para usar SSL si se establece como verdadero solo cuando transport=eapi. Si transport=cli, este valor se ignora. |
provider | no | Método de conveniencia que permite pasar todos los argumentos de conexión anterior como un objeto dict. Todas las restricciones (requerido, opciones, etc.) deben cumplirse ya sea por argumentos individuales o valores en este dict. |
Nota: El asterisco (*) indica el valor predeterminado si no se especifica nada.
Variables de Ansible
Clave | Opciones | Descripción |
---|---|---|
no_log | true, false* | Evita que los argumentos y la salida del módulo se registren durante la ejecución del playbook. Por defecto, no_log se establece en true para tareas que recopilan y guardan información de configuración de EOS para reducir el tamaño de la salida. Establecer en true previene toda salida excepto los resultados de la tarea. |
Nota: El asterisco (*) indica el valor predeterminado si no se especifica nada.
Dependencias
El rol eos-bridging se basa en módulos incluidos en el código central de Ansible. Estos módulos se añadieron en la versión 2.1 de Ansible.
- Ansible 2.1.0
Ejemplo de Playbook
El siguiente ejemplo usará el rol arista.eos-mlag para configurar completamente MLAG en dos switches leaf sin escribir ninguna tarea. Crearemos un archivo hosts
con nuestros dos switches leaf, luego un archivo correspondiente host_vars
para cada leaf y luego un simple playbook que solo hace referencia al rol mlag. Al incluir el rol, automáticamente obtenemos acceso a todas las tareas para configurar MLAG. Lo bueno de esto es que si tienes un host sin configuración MLAG, las tareas se omitirán sin problema.
Ejemplo de archivo de hosts:
[leafs]
leaf1.example.com
leaf2.example.com
Ejemplo de host_vars/leaf1.example.com
provider:
host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli
mlag:
mlag_domain_id: mlag1
mlag_trunk_group: mlagpeer
mlag_shutdown: false
local_if_vlan: Vlan1024
local_if_vlan_description: Enlace Peer MLAG
local_if_ip_address: 10.0.0.1/30
local_if_disable_spanning_tree: true
peer_address: 10.0.0.2
peer_link_if: Port-Channel10
peer_link_mode: trunk
peer_link_lacp_mode: active
peer_link_enable: true
peer_link_members:
- Ethernet3
- Ethernet4
Ejemplo de host_vars/leaf2.example.com
host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli
no_log: true
mlag:
mlag_domain_id: mlag1
mlag_trunk_group: mlagpeer
mlag_shutdown: false
local_if_vlan: Vlan1024
local_if_ip_address: 10.0.0.2/30
local_if_disable_spanning_tree: true
peer_address: 10.0.0.1
peer_link_if: Port-Channel10
peer_link_mode: trunk
peer_link_lacp_mode: active
peer_link_enable: true
peer_link_members:
- Ethernet3
- Ethernet4
Un simple playbook para habilitar MLAG en tus leafs, leaf.yml
- hosts: leafs
roles:
- arista.eos-mlag
Luego ejecuta con:
ansible-playbook -i hosts leaf.yml
Información para Desarrolladores
Las contribuciones al desarrollo son bienvenidas. Por favor, consulta Arista Roles for Ansible - Guidelines de Desarrollo (test/arista-ansible-role-test/README) para información adicional, incluyendo cómo desarrollar y ejecutar casos de prueba para el desarrollo de roles.
Licencia
Copyright (c) 2015, Arista Networks EOS+ Todos los derechos reservados.
La redistribución y el uso en formas de fuente y binarias, con o sin modificación, están permitidos siempre que se cumplan las siguientes condiciones:
Las redistribuciones del código fuente deben conservar el aviso de copyright anterior, esta lista de condiciones y el siguiente descargo.
Las redistribuciones en forma binaria deben reproducir el aviso de copyright anterior, esta lista de condiciones y el siguiente descargo en la documentación y/o materiales adicionales proporcionados con la distribución.
Ni el nombre de Arista ni los nombres de sus contribuyentes pueden ser utilizados para respaldar o promover productos derivados de este software sin permiso previo por escrito.
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 NO LIMITADA A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZABILIDAD Y ADECUACIÓN PARA UN PROPÓSITO PARTICULAR SON RENUNCIADAS. EN NINGÚN CASO, LOS TITULARES DE LOS DERECHOS DE AUTOR O COLABORADORES SERÁN RESPONSABLES POR CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO NO LIMITADO A, LA ADQUISICIÓN DE BIENES O SERVICIOS SUFICIENTES; PÉRDIDA DE USO, DATOS O GANANCIAS; O INTERRUPCIÓN DE NEGOCIOS) YA SEA CAUSADO EN VIRTUD DE CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA EN CONTRATO, RESPONSABILIDAD EXTREMA O AGRAVIO (INCLUYENDO NEGLIGENCIA O EN OTRA FORMA) QUE SURJA DE CUALQUIER FORMA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE AVISA DE LA POSIBILIDAD DE TAL DAÑO.
Información del Autor
Por favor, informa cualquier problema usando nuestro repositorio de GitHub o envíanos un correo a ansible-dev@arista.com
ansible-galaxy install arista.eos-mlag