arista.eos-system

Rôle Système pour EOS

Le rôle arista.eos-system crée une abstraction pour la configuration système globale et commune. Cela signifie que vous n'avez pas besoin d'écrire de tâches ansible. Il vous suffit de créer un objet qui répond aux exigences ci-dessous, et ce rôle traitera cet objet et effectuera la configuration nécessaire.

Ce rôle permet spécifiquement la configuration du routage IP, du nom d'hôte et des utilisateurs CLI.

Installation

ansible-galaxy install arista.eos-system

Exigences

Nécessite une connexion SSH pour se connecter à votre appareil Arista. Vous pouvez utiliser n'importe quelle variable de connexion eos intégrée ou le dictionnaire de commodité provider.

Variables du rôle

Les tâches de ce rôle sont dirigées par les objets hostname et eos_ip_routing_enabled et eos_users décrits ci-dessous :

hostname

Clé Type Remarques
hostname string La chaîne ASCII à utiliser pour configurer la valeur du nom d'hôte dans la configuration en cours des nœuds.

eos_ip_routing_enabled

Clé Type Remarques
eos_ip_routing_enabled boolean: true, false* Configure l'état du routage IPv4 'ip routing' sur le commutateur. Par défaut, les commutateurs EOS démarrent avec 'no ip routing'

eos_users (liste) chaque entrée contient les clés suivantes :

Clé Type Remarques
name string (requis) Le nom d'utilisateur unique. Le nom d'utilisateur doit respecter certaines directives de format. Les noms valides commencent par A-Z, a-z ou 0-9 et peuvent également contenir les caractères : @#$%^&*-_= +;<>,.~
encryption choix : md5, sha512 Définit le format de cryptage du mot de passe fourni dans la clé secrète correspondante.
secret string Cette clé est utilisée avec le cryptage. La valeur doit être un mot de passe haché qui a été généré au préalable.
nopassword boolean: true, false* La clé nopassword est utilisée pour créer un utilisateur sans mot de passe assigné. Cet attribut est mutuellement exclusif avec secret et encryption.
role string Configure le rôle assigné à l'utilisateur.
privilege int: 0-15 Configure le niveau de privilège pour l'utilisateur. Les valeurs permises sont des entiers entre 0 et 15. Le privilège par défaut de l'EOS est 1 si vous omettez cette clé.
sshkey string Configure une clé ssh pour l'utilisateur CLI. Cette clé ssh sera placée dans /home/USER/.ssh/authorized_keys.
state choix : present*, absent Définit l'état de l'utilisateur CLI
Note : L'astérisque (*) indique la valeur par défaut si aucune n'est spécifiée

Variables de Configuration

Clé Choix Description
eos_save_running_config true*, false Indique si les changements dans la configuration en cours résultant de l'exécution du rôle doivent être écrits dans la mémoire, copiant la configuration dans la configuration de démarrage.
Note : L'astérisque (*) indique la valeur par défaut si aucune n'est spécifiée

Variables de Connexion

Les rôles Ansible EOS nécessitent les informations de connexion suivantes pour établir la communication avec les nœuds de votre inventaire. Ces informations peuvent exister dans les répertoires group_vars ou host_vars d'Ansible, ou dans le playbook lui-même.

Clé Requis Choix Description
host oui Indique le nom d'hôte DNS ou l'adresse pour se connecter à l'appareil distant via le transport spécifié. La valeur de host est utilisée comme adresse de destination pour le transport.
port non Indique le port à utiliser lors de la connexion à l'appareil distant. Cette valeur s'applique à n'importe quelle valeur acceptable de transport. La valeur du port sera par défaut le port commun approprié si aucune n'est fournie dans la tâche (cli=22, http=80, https=443).
username non Configure le nom d'utilisateur à utiliser pour authentifier la connexion à l'appareil distant. La valeur de username est utilisée pour authentifier soit la connexion CLI, soit l'authentification eAPI selon le transport utilisé. Si la valeur n'est pas spécifiée dans la tâche, la valeur de la variable d'environnement ANSIBLE_NET_USERNAME sera utilisée à la place.
password non Indique le mot de passe à utiliser pour authentifier la connexion à l'appareil distant. C'est un argument courant utilisé pour toute valeur acceptable de transport. Si la valeur n'est pas spécifiée dans la tâche, la valeur de la variable d'environnement ANSIBLE_NET_PASSWORD sera utilisée à la place.
ssh_keyfile non Indique le fichier de clé SSH à utiliser pour authentifier la connexion à l'appareil distant. Cet argument est uniquement utilisé lorsque transport=cli. Si la valeur n'est pas spécifiée dans la tâche, la valeur de la variable d'environnement ANSIBLE_NET_SSH_KEYFILE sera utilisée à la place.
authorize non oui, non* Indique au module d'entrer en mode privilégié sur l'appareil distant avant d'envoyer des commandes. Si non spécifié, l'appareil tentera d'exécuter toutes les commandes en mode non privilégié. Si la valeur n'est pas spécifiée dans la tâche, la valeur de la variable d'environnement ANSIBLE_NET_AUTHORIZE sera utilisée à la place.
auth_pass non Indique le mot de passe à utiliser si besoin pour entrer en mode privilégié sur l'appareil distant. Si authorize=no, alors cet argument n'a aucune fonction. Si la valeur n'est pas spécifiée dans la tâche, la valeur de la variable d'environnement ANSIBLE_NET_AUTH_PASS sera utilisée à la place.
transport oui cli*, eapi Configure le type de transport à utiliser lors de la connexion à l'appareil distant. L'argument transport prend en charge la connectivité à l'appareil via cli (ssh) ou eapi.
use_ssl non oui*, non Configure le transport pour utiliser SSL s'il est défini sur vrai uniquement lorsque transport=eapi. Si transport=cli, cette valeur est ignorée.
provider non Méthode de commodité qui permet de passer tous les arguments de connexion ci-dessus sous forme d'objet dict. Toutes les contraintes (requis, choix, etc.) doivent être respectées soit par des arguments individuels, soit par des valeurs dans ce dict.
Note : L'astérisque (*) indique la valeur par défaut si aucune n'est spécifiée

Variables Ansible

Clé Choix Description
no_log true, false* Empêche les arguments et la sortie du module d'être enregistrés pendant l'exécution du playbook. Par défaut, no_log est défini sur true pour les tâches qui collectent et enregistrent des informations de configuration EOS afin de réduire la taille de la sortie. Défini sur vrai pour empêcher toute sortie autre que les résultats des tâches.
Note : L'astérisque (*) indique la valeur par défaut si aucune n'est spécifiée

Dépendances

Le rôle eos-system est construit sur des modules inclus dans le code Ansible de base. Ces modules ont été ajoutés dans la version ansible 2.1.0

  • Ansible 2.1.0

Exemple de Playbook

L'exemple suivant utilise le rôle arista.eos-system pour configurer complètement les utilisateurs CLI, le routage IP et le nom d'hôte du commutateur sans écrire de tâches. Nous allons créer un fichier hosts avec notre commutateur, puis un fichier host_vars correspondant et ensuite un simple playbook qui ne fait référence qu'au rôle eos-system. En incluant le rôle, nous avons automatiquement accès à toutes les tâches pour configurer les fonctionnalités du système. Ce qui est intéressant, c'est que si vous avez un hôte sans configuration système, les tâches seront sautées sans aucun souci.

Exemple de fichier hosts :

[leafs]
leaf1.example.com

Exemple 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 simple playbook pour configurer le bridging, leaf.yml :

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

Puis exécutez avec :

ansible-playbook -i hosts leaf.yml

Informations pour les Développeurs

Les contributions de développement sont les bienvenues. Veuillez consulter les Lignes directrices de développement pour Arista Roles for Ansible (test/arista-ansible-role-test/README) pour des informations supplémentaires, y compris sur le développement et les tests des cas pour le développement de rôle.

Licence

Copyright (c) 2015, Arista Networks EOS+ Tous droits réservés.

La redistribution et l'utilisation sous forme source et binaire, avec ou sans modification, sont autorisées à condition que les conditions suivantes soient remplies :

  • Les redistributions du code source doivent conserver l'avis de droit d'auteur ci-dessus, cette liste de conditions et le discours de non-responsabilité suivant.

  • Les redistributions sous forme binaire doivent reproduire l'avis de droit d'auteur ci-dessus, cette liste de conditions et le discours de non-responsabilité suivant dans la documentation et/ou d'autres matériaux fournis avec la distribution.

  • Ni le nom d’Arista ni les noms de ses contributeurs ne peuvent être utilisés pour approuver ou promouvoir des produits dérivés de ce logiciel sans autorisation écrite préalable spécifique.

CE LOGICIEL EST FOURNI PAR LES DÉTENTEURS DES DROITS D'AUTEUR ET LES CONTRIBUTEURS "EN L'ÉTAT" ET TOUTES GARANTIES EXPRESSES OU IMPLICITES, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES IMPLICITES DE NON-VIOLATION, DE COMMERÇabilité ET D'ADÉQUATION À UN USAGE PARTICULIER SONT DÉCLARÉES NON. EN AUCUN CAS LE DÉTENTEUR DES DROITS D'AUTEUR OU LES CONTRIBUTEURS NE PEUVENT ÊTRE TENUS RESPONSABLES DES DOMMAGES DIRECTS, INDIRECTS, ACCESSOIRES, SPÉCIAUX, EXEMPLAIRES OU CONSÉCUTIFS (Y COMPRIS, MAIS SANS S'Y LIMITER, L'ACQUISITION DE BIENS OU DE SERVICES DE SUBSTITUTION ; PERTE D'UTILISATION, DE DONNÉES OU DE PROFITS ; OU INTERRUPTION D'ACTIVITÉ) QUEL QUE SOIT LE CAUSE ET QUEL QUE SOIT LE THÉORIE DE RESPONSABILITÉ, QUE CE SOIT EN CONTRAT, RESPONSABILITÉ STRICTE OU DÉLIT (Y COMPRIS LA NÉGLIGENCE OU AUTRE) DÉCOULANT EN QUELQUE MANIÈRE DE L'UTILISATION DE CE LOGICIEL, MÊME SI AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.

Informations sur l'Auteur

Veuillez signaler tout problème en utilisant notre dépôt GitHub ou en nous envoyant un e-mail à ansible-dev@arista.com

À propos du projet

Role for managing EOS global system configuration

Installer
ansible-galaxy install arista.eos-system
Licence
bsd-3-clause
Téléchargements
12.2k
Propriétaire
Applications developed and supported by Arista EOS+