arista.eos-system

Rol del Sistema para EOS

El rol arista.eos-system crea una abstracción para la configuración común y global del sistema. Esto significa que no necesitas escribir ninguna tarea en 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 permite específicamente la configuración de Enrutamiento IP, el nombre del host y los usuarios de la CLI.

Instalación

ansible-galaxy install arista.eos-system

Requisitos

Requiere una conexión SSH para comunicarte con tu dispositivo Arista. Puedes usar cualquiera de las variables de conexión de eos incorporadas, o el diccionario de conveniencia provider.

Variables del Rol

Las tareas en este rol se basan en los objetos hostname, eos_ip_routing_enabled y eos_users descritos a continuación:

hostname

Clave Tipo Notas
hostname cadena La cadena ASCII que se usará para configurar el valor del nombre del host en la configuración actual del nodo.

eos_ip_routing_enabled

Clave Tipo Notas
eos_ip_routing_enabled booleano: true, false* Configura el estado del 'ip routing' de IPv4 en el switch. Por defecto, los switches EOS vienen con 'no ip routing'

eos_users (lista), cada entrada contiene las siguientes claves:

Clave Tipo Notas
name cadena (requerido) El nombre de usuario único. El nombre de usuario debe cumplir ciertas pautas de formato. Los nombres válidos comienzan con A-Z, a-z o 0-9 y pueden contener algunos de estos caracteres: @#$%^&*-_= +;<>,.~
encryption opciones: md5, sha512 Define el formato de encriptación de la contraseña proporcionada en la correspondiente clave secreta.
secret cadena Esta clave se usa junto con la encriptación. El valor debe ser una contraseña hash que se haya generado previamente.
nopassword booleano: true, false* La clave nopassword se usa para crear un usuario sin contraseña asignada. Este atributo es mutuamente exclusivo con secret y encryption.
role cadena Configura el rol asignado al usuario.
privilege entero: 0-15 Configura el nivel de privilegio para el usuario. Los valores permitidos son enteros entre 0 y 15. El privilegio predeterminado de EOS es 1 si omites esta clave.
sshkey cadena Configura una clave ssh para el usuario de la CLI. Esta clave ssh terminará en /home/USER/.ssh/authorized_keys.
state opciones: present*, absent Establece el estado para el usuario de la CLI.
Nota: El asterisco (*) indica el valor predeterminado si no se especifica.

Variables de Configuración

Clave Opciones Descripción
eos_save_running_config true*, false Especifica si se deben guardar los cambios en la configuración en ejecución en la memoria, copiando la configuración en la configuración de inicio.
Nota: El asterisco (*) indica el valor predeterminado si no se especifica.

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 conectarse al dispositivo remoto a través del transporte especificado. El valor de host se usa como dirección de destino para el transporte.
port no Especifica el puerto a usar al construir la conexión al dispositivo remoto. Este valor aplica a cualquier valor aceptable de transporte. El valor del puerto se ajustará al puerto común del transporte adecuado si no se proporciona. (cli=22, http=80, https=443).
username no Configura el nombre de usuario a utilizar para autenticar la conexión al dispositivo remoto. El valor de username se usa para autenticar el inicio de sesión de la CLI o la autenticación de la eAPI dependiendo de qué transporte se utiliza. Si no se especifica, se usará el valor de la variable de entorno ANSIBLE_NET_USERNAME.
password no Especifica la contraseña a usar para autenticar la conexión al dispositivo remoto. Este es un argumento común para cualquier valor aceptable de transporte. Si no se especifica, se usará el valor de la variable de entorno ANSIBLE_NET_PASSWORD.
ssh_keyfile no Especifica el archivo de clave SSH a usar para autenticar la conexión al dispositivo remoto. Este argumento solo se utiliza cuando transport=cli. Si no se especifica, se usará el valor de la variable de entorno ANSIBLE_NET_SSH_KEYFILE.
authorize no sí, no* Indica al módulo que ingrese al 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, 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, este argumento no tiene efecto. Si no se especifica, se usará el valor de la variable de entorno ANSIBLE_NET_AUTH_PASS.
transport cli*, eapi Configura la conexión de transporte a usar 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 usar 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 sean pasados como un objeto dict. Todas las restricciones (requeridas, opciones, etc.) deben cumplirse ya sea con argumentos individuales o valores en este diccionario.
Nota: El asterisco (*) indica el valor predeterminado si no se especifica.

Variables de Ansible

Clave Opciones Descripción
no_log verdadero, falso* Previene que los argumentos y la salida del módulo se registren durante la ejecución del playbook. Por defecto, no_log está configurado en verdadero para tareas que recopilan y guardan información de configuración de EOS para reducir el tamaño de salida. Establecer en verdadero evita toda salida que no sean los resultados de las tareas.
Nota: El asterisco (*) indica el valor predeterminado si no se especifica.

Dependencias

El rol eos-system se basa en módulos incluidos en el código central de Ansible. Estos módulos fueron añadidos en la versión 2.1.0 de Ansible.

  • Ansible 2.1.0

Ejemplo de Playbook

El siguiente ejemplo usará el rol arista.eos-system para configurar completamente los usuarios de la CLI, el enrutamiento IP y el nombre del switch sin escribir ninguna tarea. Crearemos un archivo hosts con nuestro switch, luego un archivo correspondiente host_vars y finalmente un simple playbook que solo hace referencia al rol eos-system. Al incluir el rol, automáticamente tenemos acceso a todas las tareas para configurar las características del sistema. Lo bueno de esto es que si tienes un host sin configuración del sistema, 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

eos_users:
  - name: superadmin
    encryption: md5
    secret: '$1$J0auuPhz$Pkr5NnHssW.Jqlk17Ylpk0'
    privilege: 15
    role: network-admin
  - name: simplebob
    nopassword: true
    privilege: 0
    role: network-operator

hostname: leaf1

eos_ip_routing_enabled: yes

Un playbook simple para configurar el puente, leaf.yml:

- hosts: leafs
  roles:
     - arista.eos-system

Luego ejecuta con:

ansible-playbook -i hosts leaf.yml

Información para Desarrolladores

Se agradecen contribuciones al desarrollo. Consulta Arista Roles for Ansible - Development Guidelines (test/arista-ansible-role-test/README) para más información, 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 el uso en forma de código fuente y binaria, con o sin modificación, están permitidos siempre que se cumplan las siguientes condiciones:

  • Las redistribuciones del código fuente deben conservar la nota de copyright anterior, esta lista de condiciones y el siguiente aviso.

  • Las redistribuciones en forma binaria deben reproducir la nota de copyright anterior, esta lista de condiciones y el siguiente aviso 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 respaldar o promover productos derivados de este software sin un permiso específico y previo por escrito.

ESTE SOFTWARE SE PROPORCIONA POR LOS TITULARES DE DERECHOS DE AUTOR Y LOS CONTRIBUIDORES "TAL CUAL" Y CUALQUIER GARANTÍA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITÁNDOSE A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN Y APTITUD PARA UN PROPÓSITO PARTICULAR SE NIEGA. EN NINGÚN CASO EL TITULAR DE LOS DERECHOS DE AUTOR O LOS CONTRIBUIDORES SERÁN RESPONSABLES POR CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSEQUENTIAL (INCLUYENDO, PERO NO LIMITÁNDOSE A, LA ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTIVOS; PÉRDIDA DE USO, DATOS O BENEFICIOS; O INTERRUPCIÓN DEL NEGOCIO) SIN IMPORTAR LA CAUSA Y BAJO CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA EN CONTRATO, RESPONSABILIDAD ESTRICTA O DELITO (INCLUYENDO NEGLIGENCIA O DE OTRA MANERA) QUE SURJA DE CUALQUIER MANERA DEL USO DE ESTE SOFTWARE, AUNQUE SE ADVIERTA 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 electrónico a ansible-dev@arista.com.

Acerca del proyecto

Role for managing EOS global system configuration

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