arista.eos-route-control

Rôle de Contrôle de Route pour EOS

Le rôle arista.eos-route-control crée une abstraction pour la configuration des politiques de routage courantes d'EOS. Cela signifie que vous n'avez pas besoin d'écrire de tâches Ansible. Il vous suffit de créer un objet qui correspond aux exigences ci-dessous, et ce rôle prendra cet objet en charge et effectuera la configuration nécessaire.

Ce rôle est utilisé pour configurer des route-maps et des routes statiques IPv4.

Installation

ansible-galaxy install arista.eos-route-control

Exigences

Nécessite une connexion SSH pour se connecter à votre appareil Arista. Vous pouvez utiliser n'importe laquelle des variables de connexion EOS intégrées ou le dictionnaire de commodité provider.

Variables de Rôle

Les tâches de ce rôle sont pilotées par les objets routemaps et ipv4_static_routes décrits ci-dessous :

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

Clé Type Remarques
nom chaîne (obligatoire) Le nom de la routemap à gérer.
action choix: permettre, refuser (obligatoire) L'action associée au nom de la routemap.
seqno int (obligatoire) Le numéro de séquence de la règle à laquelle cette entrée correspond.
description chaîne La description pour cette entrée de routemap.
match liste La liste des déclarations de correspondance qui définissent l'entrée de la routemap. Les déclarations de correspondance doivent être sans le mot 'match' au début de la chaîne.
set liste La liste des déclarations de définition qui définissent l'entrée de la routemap. Les déclarations de définition doivent être sans le mot 'set' au début de la chaîne.
continue int La déclaration définit la prochaine clause de routemap à évaluer.
état choix: présent*, absent Définir l'état pour la configuration de la routemap.

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

Clé Type Remarques
ip_dest chaîne (obligatoire) Adresse IP ou réseau de destination.
next_hop chaîne (obligatoire) Le prochain saut associé à la route.
next_hop_ip chaîne Adresse IP du prochain routeur. Valide uniquement lorsque next_hop est une interface de sortie.
distance int Distance désignée pour cette route. Par défaut 1 si l'état est 'présent'.
tag int Tag assigné pour la route. Par défaut 0 si l'état est 'présent'.
route_name chaîne Nom descriptif de la route
état choix: présent*, absent Définir l'état pour la configuration de la route.
Remarque : L'astérisque (*) désigne la valeur par défaut si aucune n'est spécifiée.

Variables de Configuration

Clé Choix Description
eos_save_running_config vrai*, faux Précise s'il faut écrire les modifications apportées par l'exécution du rôle à la mémoire, en copiant la configuration dans la configuration de démarrage.
Remarque : L'astérisque (*) désigne 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 se trouver dans les répertoires group_vars ou host_vars d'Ansible, ou dans le playbook lui-même.

Clé Obligatoire Choix Description
hôte oui Précise 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 Précise le port à utiliser lors de la connexion à l'appareil distant. Cette valeur s'applique à l'une des valeurs acceptables 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 Précise le mot de passe à utiliser pour authentifier la connexion à l'appareil distant. Il s'agit d'un argument commun utilisé pour l'une des valeurs acceptables 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 Précise le fichier de clé SSH à utiliser pour authentifier la connexion à l'appareil distant. Cet argument n'est utilisé que 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 Précise le mot de passe à utiliser s'il est requis pour entrer en mode privilégié sur l'appareil distant. Si authorize=no, cet argument n'a alors aucun effet. 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 la connexion 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 à tous les arguments de connexion ci-dessus d'être passés en tant qu'objet de dictionnaire. Toutes les contraintes (obligatoires, choix, etc.) doivent être respectées soit par des arguments individuels, soit par des valeurs dans ce dictionnaire.
Remarque : L'astérisque (*) désigne la valeur par défaut si aucune n'est spécifiée.

Variables Ansible

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

Dépendances

Le rôle eos-route-control est construit sur des modules inclus dans le code de base d'Ansible. Ces modules ont été ajoutés dans la version 2.1 d'Ansible.

  • Ansible 2.1.0

Exemple de Playbook

L'exemple suivant utilisera le rôle arista.eos-route-control pour configurer une route-map et une route statique. Nous allons créer un fichier hosts avec notre switch, puis un fichier host_vars correspondant et enfin un simple playbook qui ne fait référence qu'au rôle eos-route-control. En incluant le rôle, nous avons automatiquement accès à toutes les tâches pour configurer ces fonctionnalités EOS. Ce qui est pratique, c'est que si vous avez un hôte sans configuration correspondante, les tâches seront ignorées sans problème.

Fichier hosts d'exemple :

[leafs]
leaf1.example.com

Exemple de host_vars/leaf1.example.com

provider:
  host: "{{ inventory_hostname }}"
  username: admin
  password: admin
  use_ssl: non
  authorize: oui
  transport: cli

routemaps:
  - nom: RM-1
    action: permettre
    seqno: 10
    description: Ma merveilleuse routemap
    match:
      - as 1000
      - source-protocol bgp
    continue: 20
  - nom: RM-1
    action: permettre
    seqno: 20
    description: Ma merveilleuse routemap
    set:
      - distance 50
      - tag 100

ipv4_static_routes:
  - ip_dest: 0.0.0.0/0
    next_hop: Management1
    next_hop_ip: 172.16.130.2
    route_name: Défaut
    tag: 100

Un simple playbook, leaf.yml

- hosts: leafs
  roles:
    - arista.eos-route-control

Puis exécutez avec :

ansible-playbook -i hosts leaf.yml

Informations Développeur

Les contributions au développement sont les bienvenues. Veuillez consulter Arista Roles for Ansible - Development Guidelines (test/arista-ansible-role-test/README) pour plus d'informations, y compris comment développer et exécuter des cas de test pour le développement du rôle.

Licence

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

La redistribution et l'utilisation dans des formes 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 disclaimer suivant.

  • Les redistributions en forme binaire doivent reproduire l'avis de droit d'auteur ci-dessus, cette liste de conditions et le disclaimer 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 DE DROIT D'AUTEUR ET LES CONTRIBUTEURS "TEL QUEL" ET TOUTES GARANTIES EXPRESSES OU IMPLICITES, Y COMPRIS, MAIS SANS S'Y LIMITER, AUX GARANTIES IMPLICITES DE CONFORMITÉ ET D'ADAPTATION À UN USAGE PARTICULIER SONT DÉNIÉES. EN AUCUN CAS LA PERSONNE DÉTENTEUR DES DROITS D'AUTEUR OU LES CONTRIBUTEURS NE PEUVENT ÊTRE TENUS RESPONSABLES DE TOUT DOMMAGE DIRECT, INDIRECT, ACCESSOIRE, SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF (Y COMPRIS, MAIS SANS S'Y LIMITER, L'OBTENTION DE BIENS OU DE SERVICES SUBSTITUTIFS ; PERTE D'UTILISATION, DE DONNÉES OU DE PROFITS ; OU INTERRUPTION D'ACTIVITÉ) QUELLE QU'EN SOIT LA CAUSE ET SUR TOUTE THÉORIE DE RESPONSABILITÉ, QU'ELLE SOIT EN VERTU D'UN CONTRAT, D'UNE RESPONSABILITÉ STRICTE, OU EN RESPONSABILITÉ CIVILE (Y COMPRIS LA NÉGLIGENCE OU AUTRE) DÉCOULANT DE QUELQUE MANIÈRE QUE CE SOIT DE L'UTILISATION DE CE LOGICIEL, MÊME S'IL A ÉTÉ AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.

Informations sur l'Auteur

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

À propos du projet

Role for managing EOS Routemaps and IPv4 static routing configuration

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