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