Le Guide Pratique. Fonctionnalités réseau dans le nouveau Ansible Engine 2.9

Le Guide Pratique. Fonctionnalités réseau dans le nouveau Ansible Engine 2.9

La prochaine version de Red Hat Ansible Engine 2.9 vous apportera des amĂ©liorations impressionnantes, dont certaines sont dĂ©crites dans cet article. Comme d'habitude, nous avons dĂ©veloppĂ© les amĂ©liorations d'Ansible Network de maniĂšre ouverte, avec le soutien de la communautĂ©. Rejoignez-nous — jetez un Ɠil Ă  la planche de travail sur GitHub et explorez le plan de dĂ©veloppement pour la sortie de Red Hat Ansible Engine 2.9 sur la page wiki pour Ansible Network.

Comme nous l'avons rĂ©cemment annoncĂ©, la Red Hat Ansible Automation Platform comprend dĂ©sormais Ansible Tower, Ansible Engine et tout le contenu d'Ansible Network. Actuellement, la plupart des principales plateformes rĂ©seau sont mises en Ɠuvre via des modules Ansible. Par exemple :

  • Arista EOS
  • Cisco IOS
  • Cisco IOS XR
  • Cisco NX-OS
  • Juniper Junos
  • VyOS

La liste complÚte des plateformes entiÚrement supportées par Red Hat via un abonnement à Ansible Automation est publiée ici.

Ce que nous avons appris

Au cours des quatre derniÚres années, nous avons beaucoup appris sur le développement d'une plateforme d'automatisation réseau. Nous avons également appris que comment les artefacts de la plateforme sont utilisés dans des playbooks et des rÎles Ansible du point de vue des utilisateurs finaux. Voici ce que nous avons découvert :

  • Les organisations automatisent les appareils de plusieurs fournisseurs, et non d'un seul.
  • L'automatisation n'est pas uniquement un phĂ©nomĂšne technique, mais aussi culturel.
  • L'automatisation Ă  grande Ă©chelle des rĂ©seaux est plus complexe qu'il n'y paraĂźt, en raison des principes architecturaux fondamentaux de la conception de l'automatisation.

Lorsque nous avons discuté de nos plans de développement à long terme il y a plus d'un an, nos clients corporate ont demandé ce qui suit :

  • La collecte de faits doit ĂȘtre mieux standardisĂ©e et alignĂ©e sur le flux de travail d'automatisation pour tous les dispositifs.
  • La mise Ă  jour des configurations sur l'appareil doit Ă©galement ĂȘtre standardisĂ©e et alignĂ©e, afin que les modules Ansible traitent la deuxiĂšme partie du cycle aprĂšs la collecte des faits.
  • Des mĂ©thodes strictes et maintenues sont nĂ©cessaires pour transformer la configuration de l'appareil en donnĂ©es structurĂ©es. Sur cette base, la source de vĂ©ritĂ© pourra ĂȘtre dĂ©placĂ©e depuis l'appareil rĂ©seau.

Améliorations des faits

La collecte des faits Ă  partir des appareils rĂ©seau avec Ansible se fait souvent de maniĂšre alĂ©atoire. Les plateformes rĂ©seau sont Ă©quipĂ©es de capacitĂ©s de collecte de faits Ă  des degrĂ©s divers, mais elles ont trĂšs peu – voire pas du tout – de fonctionnalitĂ©s pour analyser et normaliser la prĂ©sentation des donnĂ©es sous forme de paires clĂ©-valeur. Lisez post Ken Celenza parle de la difficultĂ© et de la douleur d'analyser et de standardiser les donnĂ©es des faits.

Vous avez peut-ĂȘtre remarquĂ© comment nous avons travaillĂ© sur le rĂŽle Ansible Network Engine. Naturellement, aprĂšs 24 000 tĂ©lĂ©chargements, le rĂŽle Network Engine est rapidement devenu l'un des rĂŽles les plus populaires d'Ansible dans Ansible Galaxy pour les scripts d'automatisation rĂ©seau. Avant de transfĂ©rer beaucoup de cela dans Ansible 2.8, pour nous prĂ©parer Ă  ce dont nous aurons besoin dans Ansible 2.9, ce rĂŽle Ansible a fourni le premier ensemble d'outils pour aider Ă  parser les commandes, gĂ©rer les Ă©quipes et collecter des donnĂ©es pour les appareils rĂ©seau.

Si vous utilisez le Network Engine, c'est un moyen trĂšs efficace de collecter, analyser et standardiser les donnĂ©es des faits pour utilisation dans Ansible. Le point nĂ©gatif de ce rĂŽle est qu’il faut crĂ©er un grand nombre de parseurs pour chaque plateforme et pour toute l'activitĂ© rĂ©seau. Pour comprendre Ă  quel point il est difficile de crĂ©er, distribuer et maintenir des parseurs, jetez un Ɠil Ă  plus de 1200 parseurs des gars de Cisco.

En résumé, pour une automatisation à grande échelle, il est trÚs important d'obtenir des faits des appareils et de les normaliser en paires clé-valeur, mais cela devient compliqué quand on a de nombreux fournisseurs et plateformes réseau.

Chaque module de faits rĂ©seau dans Ansible 2.9 peut dĂ©sormais analyser la configuration d'un appareil rĂ©seau et renvoyer des donnĂ©es structurĂ©es — sans bibliothĂšques supplĂ©mentaires, rĂŽles Ansible ou parseurs personnalisĂ©s.

À partir d'Ansible 2.9, Ă  chaque mise Ă  jour d'un module rĂ©seau, le module de faits est amĂ©liorĂ© pour fournir des donnĂ©es sur cette section de la configuration. Cela signifie que le dĂ©veloppement des faits et des modules se fait Ă  un rythme commun, et qu'ils auront toujours une structure de donnĂ©es partagĂ©e.

La configuration des ressources sur un appareil rĂ©seau peut ĂȘtre extraite et transformĂ©e en donnĂ©es structurĂ©es de deux maniĂšres. Les deux mĂ©thodes permettent de collecter et de transformer une liste spĂ©cifique de ressources Ă  l'aide du nouveau mot-clĂ© gather_network_resources. Les noms des ressources correspondent aux noms des modules, ce qui est trĂšs pratique.

Lors de la collecte des faits :

À l'aide du mot-clĂ© gather_facts vous pouvez extraire la configuration actuelle de l'appareil au dĂ©but du playbook, puis l'utiliser tout au long de celui-ci. Indiquez les ressources spĂ©cifiques Ă  extraire de l'appareil.

- hĂŽtes : arista
  module_defaults:
    eos_facts:
      gather_subset : min
      gather_network_resources :
      - interfaces
  gather_facts : True

Vous avez peut-ĂȘtre remarquĂ© quelque chose de nouveau dans ces exemples, Ă  savoir — gather_facts : true maintenant disponible pour la collecte native de faits pour les dispositifs rĂ©seau.

Utilisation directe du module des faits réseau :

- nom : collecter les faits de configuration des interfaces
  eos_facts:
    gather_subset : min
    gather_network_resources :
    - interfaces

Le playbook retourne les faits suivants sur l'interface :

ansible_facts:
   ansible_network_resources:
      interfaces:
      - enabled : true
        name : Ethernet1
        mtu : '1476'
      - enabled : true
        name : Loopback0
      - enabled : true
        name : Loopback1
      - enabled : true
        mtu : '1476'
        name : Tunnel0
      - enabled : true
        name : Ethernet1
      - enabled : true
        name : Tunnel1
      - enabled : true
        name : Ethernet1

Notez comment Ansible extrait la configuration native de l'appareil Arista et la transforme en données structurées à utiliser sous forme de paires clé-valeur standard pour les tùches et opérations ultérieures.

Les faits d'interface peuvent ĂȘtre ajoutĂ©s aux variables stockĂ©es d'Ansible et utilisĂ©es immĂ©diatement ou plus tard comme entrĂ©e pour le module de ressource eos_interfaces sans traitement ni transformation supplĂ©mentaires.

Modules de ressources

Ainsi, nous avons extrait des faits, normalisĂ© les donnĂ©es, les avons intĂ©grĂ©es dans un schĂ©ma de structure de donnĂ©es interne standardisĂ© et disposons maintenant d'une source de vĂ©ritĂ© prĂȘte Ă  l'emploi. Hourra ! C'est bien sĂ»r formidable, mais nous devons toujours transformer les paires clĂ©-valeur en une configuration spĂ©cifique que la plateforme de l'appareil attend. Nous avons maintenant besoin de modules pour des plateformes spĂ©cifiques afin de rĂ©pondre Ă  ces nouvelles exigences de collecte de faits et de normalisation.

Qu'est-ce qu'un module de ressource ? Les sections de configuration d'un appareil peuvent ĂȘtre considĂ©rĂ©es comme des ressources fournies par cet appareil. Les modules de ressources rĂ©seau sont dĂ©libĂ©rĂ©ment limitĂ©s Ă  une seule ressource et peuvent ĂȘtre empilĂ©s comme des briques pour configurer des services rĂ©seau complexes. En consĂ©quence, les exigences et la spĂ©cification pour un module de ressource sont naturellement simplifiĂ©es, car le module de ressource peut lire et configurer un service rĂ©seau spĂ©cifique sur un appareil rĂ©seau.

Pour expliquer ce que fait un module de ressource, examinons un exemple de playbook qui montre une opération idempotente utilisant les nouveaux faits du ressource réseau et le module eos_l3_interface.

- nom : exemple de faits renvoyés directement à l'appareil.
  hĂŽtes : arista
  collecter_faits : faux
  tĂąches :
  - nom : récupérer les faits eos d'arista
    eos_facts :
      gather_subset : min
      gather_network_resources : l3_interfaces

  - nom : s'assurer que les informations d'adresse IP sont exactes
    eos_l3_interfaces :
      config : "{{ ansible_network_resources['l3_interfaces'] }}"
      register : result

  - nom : s'assurer que la configuration n'a pas changé
    assert :
      that : not result.changed

Comme vous pouvez le voir, les données recueillies depuis l'appareil sont transmises directement au module de ressources concerné sans transformation. Lors de l'exécution du playbook, les valeurs sont extraites de l'appareil et comparées aux valeurs attendues. Dans cet exemple, les valeurs récupérées correspondent à celles attendues (c'est-à-dire que la vérification des écarts de configuration est effectuée) et un message est affiché indiquant si la configuration a changé.

La meilleure façon de détecter un écart de configuration est de stocker les faits dans des variables Ansible et de les utiliser périodiquement avec le module de ressources en mode de vérification. C'est une méthode simple pour voir si quelqu'un a modifié les valeurs manuellement. Dans la plupart des cas, les organisations autorisent les modifications et la configuration manuelles, bien que de nombreuses opérations soient effectuées via Ansible Automation.

Qu'est-ce qui différencie les nouveaux modules de ressources des précédents ?

Pour un ingénieur en automatisation des réseaux, il y a 3 principales différences entre les modules de ressources dans Ansible 2.9 et les versions précédentes.

1) Pour une ressource rĂ©seau spĂ©cifique (qui peut aussi ĂȘtre considĂ©rĂ©e comme une section de configuration), les modules et les faits se dĂ©velopperont sur tous les systĂšmes d'exploitation rĂ©seau pris en charge simultanĂ©ment. Nous croyons que si Ansible prend en charge la configuration de la ressource sur une plateforme rĂ©seau, nous devons le prendre en charge partout. Cela facilite l'utilisation des modules de ressources, car l'ingĂ©nieur en automatisation des rĂ©seaux peut maintenant configurer une ressource (comme LLDP) sur tous les systĂšmes d'exploitation rĂ©seau avec des modules natifs et pris en charge.

2) Les modules de ressources incluent désormais une valeur d'état.

  • fusionnĂ©: la configuration est fusionnĂ©e avec la configuration fournie (par dĂ©faut);
  • remplacĂ©: la configuration de la ressource sera remplacĂ©e par la configuration fournie;
  • remplacĂ©: la configuration de la ressource sera remplacĂ©e par la configuration fournie ; les instances de ressources superflues seront supprimĂ©es ;
  • supprimĂ©: la configuration de la ressource sera supprimĂ©e/restaurĂ©e par dĂ©faut.

Le Guide Pratique. Fonctionnalités réseau dans le nouveau Ansible Engine 2.9

3) Les modules de ressource incluent dĂ©sormais des valeurs de retour stables. Lorsqu'un module de ressource rĂ©seau effectue (ou propose) les modifications nĂ©cessaires sur un appareil rĂ©seau, il renvoie les mĂȘmes paires clĂ©-valeur dans le playbook.

  • before: la configuration sur l'appareil sous forme de donnĂ©es structurĂ©es avant la tĂąche ;
  • aprĂšs: si l'appareil a changĂ© (ou peut changer, si le mode de vĂ©rification est utilisĂ©), la configuration rĂ©sultante sera renvoyĂ©e sous forme de donnĂ©es structurĂ©es ;
  • commandes: toutes les commandes de configuration exĂ©cutĂ©es sur l'appareil pour le mettre dans l'Ă©tat souhaitĂ©.

Le Guide Pratique. Fonctionnalités réseau dans le nouveau Ansible Engine 2.9

Le Guide Pratique. Fonctionnalités réseau dans le nouveau Ansible Engine 2.9

Que signifie tout cela ? Pourquoi est-ce important ?

Cet article dĂ©crit de nombreux concepts complexes, mais nous espĂ©rons qu'Ă  la fin, vous comprendrez mieux ce que les clients d'entreprise demandent en termes de collecte de faits, de normalisation des donnĂ©es et de configuration de boucle pour une plateforme d'automatisation. Mais pourquoi ont-ils besoin de ces amĂ©liorations ? De nombreuses organisations s'engagent actuellement dans une transformation numĂ©rique pour rendre leurs environnements IT plus flexibles et compĂ©titifs. Que ce soit bon ou mauvais, de nombreux ingĂ©nieurs rĂ©seaux deviennent dĂ©veloppeurs rĂ©seaux - par intĂ©rĂȘt personnel ou sur ordre de leurs dirigeants.

Les organisations comprennent que l'automatisation de modÚles de réseau individuels ne résout pas le problÚme de la fragmentation et n'améliore l'efficacité que jusqu'à un certain point. La plateforme Red Hat Ansible Automation Platform fournit des modÚles de données de ressources stricts et normalisés pour gérer programmatique les données de base sur un appareil réseau. Cela signifie que les utilisateurs abandonnent progressivement les méthodes de configuration individuelles au profit de méthodes plus modernes axées sur la technologie (par exemple, adresses IP, VLAN, LLDP, etc.), plutÎt que sur une implémentation spécifique du fournisseur.

Cela signifie-t-il que les jours des modules de commande et de configuration fiables et éprouvés sont comptés ? Pas du tout. Les modules de ressources attendus ne seront pas applicables dans tous les cas et pour chaque fournisseur, donc les modules de commande et de configuration seront encore nécessaires pour certaines réalisations. L'objectif des modules de ressource est de simplifier des modÚles Jinja volumineux et de normaliser des configurations d'appareil non structurées en un format JSON structuré. Avec les modules de ressources, les réseaux existants pourront plus facilement convertir leur configuration en paires clé-valeur structurées, qui constitueront une source de vérité lisible. En utilisant des paires clé-valeur structurées, il sera possible de passer d'exécuter des configurations sur chaque appareil à travailler avec des données structurées indépendantes et de mettre les réseaux au premier plan dans une approche « infrastructure en tant que code ».

Quels modules de ressources apparaĂźtront dans Ansible Engine 2.9 ?

Avant de détailler ce qu'il y aura dans Ansible 2.9, rappelons-nous comment nous avons divisé l'ensemble du travail.

Nous avons identifié 7 catégories et attribué des ressources réseau spécifiques à chacune :

Le Guide Pratique. Fonctionnalités réseau dans le nouveau Ansible Engine 2.9

Remarque : les ressources mises en gras ont Ă©tĂ© planifiĂ©es et mises en Ɠuvre dans Ansible 2.9.
Sur la base des retours d'expérience des clients d'entreprise et de la communauté, il était logique de s'attaquer d'abord à ces modules liés aux protocoles de topologie réseau, à la virtualisation et aux interfaces.
Les modules de ressources suivants ont été développés par l'équipe Ansible Network et correspondent aux plateformes prises en charge par Red Hat :

Le Guide Pratique. Fonctionnalités réseau dans le nouveau Ansible Engine 2.9

Les modules suivants ont été développés par la communauté Ansible :

  • exos_lldp_global — d'Extreme Networks.
  • nxos_bfd_interfaces — de Cisco
  • nxos_telemetry — de Cisco

Comme vous pouvez le voir, le concept des modules de ressources s'inscrit dans notre stratégie d'orientation vers les plateformes. En d'autres termes, nous incluons les capacités et les fonctions nécessaires directement dans Ansible, afin de soutenir la normalisation lors du développement des modules réseau, tout en simplifiant le travail des utilisateurs au niveau des rÎles et des playbooks Ansible. Pour étendre le développement des modules de ressources, l'équipe Ansible a publié l'outil Module Builder.

Plans pour Ansible 2.10 et au-delĂ 

AprĂšs le lancement d'Ansible 2.9, nous travaillerons sur le prochain ensemble de modules de ressources pour Ansible 2.10, qui pourront ĂȘtre utilisĂ©s pour une configuration supplĂ©mentaire de la topologie et des politiques rĂ©seau, par exemple ACL, OSPF et BGPLe plan de dĂ©veloppement peut encore ĂȘtre ajustĂ©, donc si vous avez des commentaires, faites-le nous savoir dans la communautĂ© Ansible Network.

Ressources et démarrage

Communiqué de presse sur la plateforme d'automatisation Ansible
Blog de la plateforme d'automatisation Ansible
L'avenir de la livraison de contenu dans Ansible
Réflexions sur la modification de la structure du projet Ansible

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster