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 | sí | 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 | sí | 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.
Role for managing EOS global system configuration
ansible-galaxy install arista.eos-system