Ansible Collection 1.3.0 pour OmniSwitch AOS

ALE Ansible Collection

La collection est disponible dans la Galaxy Ansible et attend vos tests et propositions d’améliorations, le dépôt officiel des modules étant dans le GitHub public. La licence utilisée permet toutes les améliorations des Network Modules et Filtres sur la branche main, mais n’autorise pas la redistributions des forks, afin d’éviter la perte d’énergie (licence Attribution-NonCommercial-NoDerivatives 4.0 International / CC BY-NC-ND 4.0).

Modules

  • gmoisio.ale.ale_aos_ping : Vérifie la connectivité en SSH à un équipement.
  • gmoisio.ale.ale_aos_command : Exécute une liste de commandes sur un équipement. Il est possible de chercher une chaîne de caractères dans le résultat de chaque commande en passant un dictionnaire dans la liste. Dès qu’une chaine de caractère n’est pas trouvée, l’exécution des commandes s’arrête.
  • gmoisio.ale.ale_aos_config : Exécute un ensemble de commandes, généralement pour effectuer une configuration. L’ensemble des commandes peut être transmis sous la forme d’une liste ou sous la forme d’un fichier texte pouvant être généré via un template Jinja2.
  • gmoisio.ale.ale_aos_facts : Module expérimental permettant de récupérer des informations (vlans, interfaces et serveurs ntp) sous la forme d’un dictionnaire de listes pour effectuer des boucles.

Filtres

gmoisio.ale.validate : Ce filtre permet de valider des variables en les confrontant à un schéma YAML. La génération d’un template Jinja2 s’arrête en affichant les causes d’erreurs si les variables ne sont pas conformes au schéma. Le filtre peut être utilisé dans un playbook pour seulement valider la Source de Vérité.

Continuer la lecture de « Ansible Collection 1.3.0 pour OmniSwitch AOS »

Ansible Collection 1.2.2 pour OmniSwitch AOS

ALE Ansible Collection

La collection est disponible dans la Galaxy Ansible et attend vos tests et propositions d’améliorations, le dépôt officiel des modules étant dans le GitHub public. La licence utilisée permet toutes les améliorations des Network Modules sur la branche main, mais n’autorise pas la redistributions des forks, afin d’éviter la perte d’énergie (licence Attribution-NonCommercial-NoDerivatives 4.0 International / CC BY-NC-ND 4.0).

  • gmoisio.ale.ale_aos_ping : Vérifie la connectivité en SSH à un équipement.
  • gmoisio.ale.ale_aos_command : Exécute une liste de commandes sur un équipement. Il est possible de chercher une chaîne de caractères dans le résultat de chaque commande en passant un dictionnaire dans la liste. Dès qu’une chaine de caractère n’est pas trouvée, l’exécution des commandes s’arrête.
  • gmoisio.ale.ale_aos_config : Exécute un ensemble de commandes, généralement pour effectuer une configuration. L’ensemble des commandes peut être transmis sous la forme d’une liste ou sous la forme d’un fichier texte pouvant être généré via un template Jinja2.
  • gmoisio.ale.ale_aos_facts : Module expérimental permettant de récupérer des informations (vlans, interfaces et serveurs ntp) sous la forme d’un dictionnaire de listes pour effectuer des boucles.

Pour exécuter le module gmoisio.ale.ale_aos_command sous sa nouvelle forme, il convient de se conformer aux syntaxes suivantes :

---
- name: This is a test for ale_aos_command module
  hosts: ale
  connection: local
  gather_facts: no
  tasks:
    - name: Test ale_aos_command Python module
      gmoisio.ale.ale_aos_command: 
        host: "{{ ansible_host }}"
        username: "{{ login }}"
        password: "{{ password }}"
        commands:
          - show running-directory
          - show vlan
Continuer la lecture de « Ansible Collection 1.2.2 pour OmniSwitch AOS »

Ansible Collection pour OmniSwitch

ALE Ansible Collection

J’avais écrit les modules ale_aos pour Ansible disponibles dans la Galaxy pour permettre l’interaction entre Ansible et des OmniSwitchs en AOS6 et AOS8.

Au cours du cycle de développement d’Ansible 2.10, la communauté Ansible a migré avec succès la plupart des modules et plugins vers les collections. Les collections, ainsi que les modules et plugins qu’elles contiennent, peuvent désormais être développées, mises à jour et publiées indépendamment d’Ansible lui-même. Depuis Ansible 2.10, les utilisateurs de la communauté ont deux options: continuer à installer tout avec le package de communauté Ansible, ou installer ansible-base (2.10) ou ansible-core (2.11), puis ajouter les collections sélectionnées individuellement.

Afin de suivre l’évolution d’Ansible, j’ai porté le rôle ale_aos vers une collection en apportant quelques améliorations. La collection est disponible dans la Galaxy Ansible et attend vos tests et propositions d’améliorations, le dépôt officiel des modules étant dans le GitHub public. La licence utilisée permet toutes les améliorations des Network Modules sur la branche main, mais n’autorise pas la redistributions des forks, afin d’éviter la perte d’énergie (licence Attribution-NonCommercial-NoDerivatives 4.0 International / CC BY-NC-ND 4.0).

  • gmoisio.ale.ale_aos_ping : Vérifie la connectivité en SSH à un équipement.
  • gmoisio.ale.ale_aos_command : Exécute une commande sur un équipement. Il est possible de chercher une chaîne de caractères dans le résultat de la commande.
  • gmoisio.ale.ale_aos_config : Exécute un ensemble de commandes, généralement pour effectuer une configuration. L’ensemble des commandes peut être transmis sous la forme d’une liste ou sous la forme d’un fichier texte pouvant être généré via un template Jinja2.
  • gmoisio.ale.ale_aos_facts : Module expérimental permettant de récupérer des informations (vlans, interfaces et serveurs ntp) sous la forme d’un dictionnaire de listes pour effectuer des boucles.
Continuer la lecture de « Ansible Collection pour OmniSwitch »

ALE AOS8 Web Services

ALE AOS8 Web Services

Dernière modification le 3 mars 2022

Alcatel-Lucent Enterprise le rappelle régulièrement : « l’objectif est de n’avoir à terme que des commutateurs Ethernet en AOS8 ». Effectivement, tous les modèles qui sont sortis et se sont rajoutés au catalogue, parfois en remplacement de modèles existants, font tourner la version 8 de l’AOS. Dans ce contexte il était intéressant de voir les possibilités offertes en matière d’automatisation externe en environnement homogène.

Pour rappel, lorsqu’on est dans un contexte de mixité AOS6 et AOS8, les possibilités sont les suivantes :

  • Utiliser la librairie Netmiko avec Python, pour laquelle j’avais écrit le module AOS en 2017 et qui est toujours maintenu par Kirk Byers lors des différentes montées de version de la librairie.
  • Utiliser le Network Module ale_aos que j’ai écrit pour Ansible en 2020.

C’est la fonction Web Services qui permet de personnaliser et d’étendre l’interface de gestion sur les dispositifs AOS8. Dans le cas qui nous intéresse, il prend en charge l’utilisation d’une interface web basée sur REST qui interagit avec les variables de gestion AOS (MIB) et les commandes CLI. Donc, il fournit deux méthodes de configuration via la gestion directe des variables MIB ou l’utilisation de commandes CLI et prend en charge à la fois les formats de réponse en XML et en JSON.

Il ne faut pas confondre REST et le protocole RESTCONF qui utilise le modèle de données YANG. REST est un ensemble de directives pour l’architecture logicielle des systèmes distribués et AOS8 supporte les verbes suivants :

  • GET : pour récupérer des informations. C’est un équivalent grossier de SNMP / MIB GET mais aussi, à un niveau supérieur, un équivalent de la commande show. Ce verbe est utilisé exclusivement pour les commandes en lecture seule et sans autre effet secondaire.
  • PUT : pour créer de nouvelles informations, comme, par exemple, un nouveau VLAN. Il s’agit d’une opération d’écriture.
  • POST : fonctionne de la même façon que lors de la soumission de formulaires Web et il est utilisé, dans un contexte de service Web, pour mettre à jour des informations existantes.
  • DELETE : pour supprimer des informations existantes.
Continuer la lecture de « ALE AOS8 Web Services »

Free Webinar Python et Ansible avec ALE

Webinar Automatisation ALE

Dernière modification le 30 mars 2020

Afin de profiter de la période de confinement pour améliorer les connaissances et revenir dans le circuit économique avec des méthodes encore plus efficaces, je vous propose une série de Webinars gratuits sur l’Automatisation Réseau.

Régulièrement, nous prendrons un sujet et nous le regarderons ensemble. L’objectif n’est pas seulement de participer de manière passive, mais aussi d’essayer soit même de le mettre en place en se faisant assister de la communauté présente dans le webinar.

Rejoignez la communauté Slack du NetDevOps Accelerator.

Continuer la lecture de « Free Webinar Python et Ansible avec ALE »

Robot Framework

Librairie Python Robot Framework

Dernière modification le 7 décembre 2020

Il existe de nombreuses solutions pour effectuer les tests unitaires TDD (Test Driven Development) dans le cadre des mises au point NetDevOps, mais Robot Framework est mon framework d’automatisation open source générique préféré pour effectuer les tests d’acceptation ATDD (Acceptance Test Driven Development). Ses capacités de test peuvent être étendues avec des librairies implémentées en Python ou en Java. Initialement, le framework a été développé par Nokia Networks. Aujourd’hui, il est sponsorisé par la Robot Framework Foundation.

Dans la mesure où on parle de « Network as Code » ou « Infrastructure as Code », c’est que l’on considère que tout ce qui est nécessaire pour activer l’infrastructure existe sous forme logicielle. Dans le monde du logiciel, les approches Agile et DevOps sont largement adoptées. On sait que les tests sont une partie importante de l’approche Agile pour la « Definition of Done » d’une « User Story ». Pour réaliser une « User Story », il est généralement nécessaire de la découper en tâches. Il n’existe pas qu’une seule façon de concevoir les choses, mais en ce qui me concerne, je considère que les tests qui valident une tâche doivent rester au plus proche de celle-ci. Il s’agit, le plus souvent, de tests unitaires. Si j’utilise Ansible pour réaliser la tâche, alors les tests permettant de dire que la tâche est bien terminée sont intégrés à ses Playbooks.

Continuer la lecture de « Robot Framework »

Ansible ALE Galaxy

ALE OmniSwitch Ansible Galaxy

Dernière modification le 28 mars 2020

Depuis plusieurs années, il y a une absence de module réseau pour Alcatel-Lucent Enterprise dans Ansible. Lorsque j’avais travaillé sur le module alcatel_aos pour Netmiko, l’idée était de permettre de faire de l’automatisation en utilisant le langage Python. L’adjonction du framework Nornir offrait une structuration du code qui reprenait certaines logiques d’Ansible. Trois ans plus tard, force est de constater qu’une grande majorité de personnes partent plus facilement sur le chemin du « Human-driven Automation » avec un outil comme Ansible et son pseudo langage en YAML qu’avec un langage direct comme Python qui reste réservé aux personnes plus expérimentées dans le développement.

C’est pour combler ce manque que j’ai écrit les modules ale_aos pour Ansible, en restant le plus générique possible afin de laisser plus de souplesse dans l’utilisation de ces modules. Ils sont disponibles dans la Galaxy Ansible, et attendent vos tests et propositions d’amélioration, le dépôt officiel des modules de la Galaxy étant dans un Github public. La licence utilisée permet toutes les améliorations sur la branche master des Network Modules, mais n’autorise pas la redistributions des forks, afin d’éviter la perte d’énergie (licence Attribution-NonCommercial-NoDerivatives 4.0 International / CC BY-NC-ND 4.0).

Continuer la lecture de « Ansible ALE Galaxy »

Automatisation ALE

ALE Automation

Dernière modification le 14 février 2022

Dans la gamme des commutateurs Alcatel-Lucent Enterprise, appelée OmniSwitch, il existe deux systèmes d’exploitation : AOS6 et AOS8. La stratégie consiste à uniformiser de plus en plus les équipements avec AOS8.

AOS8 possède plus de méthodes d’automatisation que AOS6, mais les points communs entre les deux systèmes sont :

  • Zero-touch Provisionning
    • Serveurs DHCP / FTP / TFTP ou…
    • Serveur OmniVista 2500 on-premise ou en cloud (Cirrus)
  • Python / SSH avec mon module Netmiko en Off-box scripting
    • Je conseille d’utiliser Netmiko avec le framework Python Nornir
  • Ansible / SSH avec mes Network Modules disponibles dans la Galaxy
Continuer la lecture de « Automatisation ALE »

Automatisation ALE – Métropole et Ville de Perpignan

Metropole et Ville de Perpignan

Dernière modification le 1 décembre 2021

Outre des objectifs de disponibilité et de performance qui nous avaient été fixés par la direction du numérique de la Métropole et de la Ville de Perpignan, la Direction du Numérique souhaitait mettre en oeuvre une approche DevOps. Dans ce cadre là, notre rôle a consisté à accompagner les équipes sur les nouvelles technologies, méthodologies et outils nécessaires à la mise en œuvre de ces infrastructures innovantes.

Continuer la lecture de « Automatisation ALE – Métropole et Ville de Perpignan »

Netmiko pour OmniSwitch

Alcatel-Lucent Enterprise

Dernière modification le 23 mars 2020

En 2016 j’ai écrit le module alcatel_aos pour Netmiko. Depuis, ce module Python fonctionne pour AOS6 et AOS8 et il est maintenu par Kirk Byers lorsque des changements majeurs sont effectués sur la librairie Netmiko.

Lorsqu’il s’agit de faire appel à Netmiko pour réaliser de l’automatisation sur OmniSwitch ALE, j’y adjoins le framework d’automatisation Nornir écrit en Python.

Fichier de configuration Nornir :

---
core:
    num_workers: 100
inventory:
    plugin: nornir.plugins.inventory.simple.SimpleInventory
    options:
        host_file: 'inventory/hosts.yaml'
        group_file: 'inventory/groups.yaml'
        defaults_file: 'inventory/defaults.yaml'
Continuer la lecture de « Netmiko pour OmniSwitch »