Pourquoi le DevOps facilite la vie des ingénieurs réseau ?

Kathleen Ravat
CNS Communications
Published in
5 min readJun 21, 2019

Le métier d’ingénieur réseau est parfois répétitif et il existe de multiples tâches que nous pouvons automatiser, comme par exemple configurer des équipements ou récolter/traiter des données à partir de ces derniers. Les tendances actuelles et l’évolution du métier d’ingénieur réseau nous poussent de plus en plus à avoir une approche DevOps.

Le DevOps est un mouvement tendant à rallier le développement logiciel à d’autres domaines plus opérationnels tels que l’ingénierie réseau. DevOps est un mot qui implique plein de méthodes, techniques et technologies : L’intégration continue, livraison continue, scrum, automatisation de tests… Dans notre cadre, c’est le fait d’utiliser des outils modernes de développement logiciel pour faciliter les opérations sur l’infrastructure réseau hybride (équipements physiques, référentiels d’informations et services cloud). Vous me direz que les scripts existent depuis toujours, et c’est vrai. Ce qui change c’est la multitude d’interactions et intégrations avec d’autres systèmes, les facilités des langages de programmations et la multitude d’outils et librairies pour rapidement créer des scripts maintenables.

J’ai récemment participé à la mise en place et à l’utilisation d’une solution complexe d’automatisation au sein d’une grande entreprise française du luxe. Cette expérience me donne l’occasion aujourd’hui, autour d’un cas concret, de vous partager les bénéfices d’une telle solution.

1. La complexité des déploiements WAN

Le contexte : Le projet de cette entreprise du luxe consiste à déployer la solution Cisco IWAN sur plusieurs centaines de sites à travers le monde, en se basant sur les gammes de routeurs Cisco ISR 4000 et ASR 1000.

Migrer vers ce nouveau WAN implique de nombreuses étapes préparatives pour les ingénieurs réseaux. Par exemple : la configuration d’un routeur fait plus de 1300 lignes de données qui varient d’un site à l’autre. À cette complexité s’ajoute le fait qu’il existe différentes topologies de sites qui demandent chacune des adaptations (boutique, bureaux, etc.), et que chaque plaque géographique suit des standards différents.

En bref, générer ces configurations manuellement est très fastidieux.

La solution développée en réponse à cela a permis de générer automatiquement les configurations.

Ingénieure en train de générer une configuration de 1300 lignes manuellement

Figure 1 Ingénieure en train de générer une configuration de 1300 lignes manuellement

2. Comment ça marche ?

“Wizard” du script

Figure 2 “Wizard” du script

Le script, en Python, fonctionne à la manière d’un « wizard », similaire à celui que l’on peut retrouver sur un équipement Cisco en CLI lors de sa première configuration (« Would you like to enter the initial configuration dialog? »). Le design et développement de cet outil a été réalisé par Eugen Şerban, collègue chez CNS Communications. Son expertise en Python et notre expérience en tant qu’ingénieurs réseau sont la source d’un outil orienté métier, facilement extensible ; et fun à développer.

Le script se déroule en plusieurs étapes. La première consiste à remplir une base de données.Le script se connecte à Infoblox avec vos identifiants, vous lui indiquez le subnet d’un site et le script préremplit déjà quelques informations de base (pays, ville, etc.).

Ensuite, il faut fournir au script le minimum d’informations dont il a besoin pour remplir sa base. Dans le cadre du projet WAN cela inclut par exemple le subnet d’interconnexion WAN, les différents subnets du site ou le type de site.

Les données manquantes sont calculées (les adresses IP sont déduites à partir des subnets, par exemple), les nœuds Zscaler les plus proches sont proposés par géolocalisation et la base de données se remplit.

En cas d’erreur dans une IP, on peut directement la modifier dans la base de données et on peut regénérer la configuration (le script est modulaire, on peut suivre tout le « wizard » de A à Z ou déclencher une phase à la demande).

Les routeurs WAN fournissent également un accès Wi-Fi guest grâce à Zscaler et Cloudi-fi. La deuxième phase du script permet de configurer automatiquement les services Zscaler et Cloudi-fi via leurs APIs respectives, et de récupérer les informations nécessaires à la création des tunnels IPSec qui seront configurés sur les routeurs WAN.

Pour finir, le script génère les configurations et les enregistre sur un serveur FTP. L’exécution de la totalité du script ne prend que 5 à 10 minutes, manuellement cela aurait pris plusieurs heures.

3. La flexibilité Jinja2

L’atout de ce script est sa modularité, grâce à l’utilisation du module Python Jinja2.

Jinja2 permet une simplification dans la génération de nos configurations, grâce à un système de template qui sera rempli au fur et à mesure avec l’aide des variables précédemment collectées dans notre base de données.

La force de Jinja2 est d’ajouter à ces templates une couche logique permettant de décider ou non l’inclusion de certains modules. En fonction de la topologie du site (bureaux, boutique…), des fonctionnalités (PfR, QoS…), des types de liens utilisés (MPLS, Internet…) ou du standard d’adressage qu’il suit, on fera appel ou non à des sous-templates composant les différentes sections de la configuration finale.

De cette manière, pour créer une nouvelle topologie de site, il y a seulement besoin de créer ou modifier des sous-templates Jinja, sans avoir à toucher au Python (ou très peu). Jinja apporte une touche « ingénieur réseau friendly ».

Exemple de template Jinja2

Figure 3 Exemple de template Jinja2

4. Network automation is life

Quand le contexte s’y prête, le scripting et l’automatisation offrent de nombreux avantages :

  • Réduction de la pénibilité au travail (tâches répétitives, fastidieuses…)
  • Gain de temps considérable
  • Limitation des erreurs (les erreurs humaines sont plus fréquentes que les bugs ou erreurs de développement — il n’existe pas de patch pour humain, CQFD)

Le seul point négatif est que la création de ce type d’outil demande un investissement plus important au début d’un projet, mais qui peut très vite être rentabilisé sur le long terme. Des connaissances en développement sont nécessaires, mais ces lacunes peuvent être facilement comblées par la connaissance collective trouvée sur Internet (il existe de plus en plus d’outils/scripts mis à disposition de tous). Dans le cadre de l’automatisation réseau, un des langages les plus populaires est Python; il existe des formations gratuites et payantes, des livres et ebooks dédiés à la programmation Python pour réseaux.

Nous avons aujourd’hui déployé plus de 150 sites en Cisco IWAN, et il reste plusieurs centaines de sites à migrer. Sans le script, nous aurions passé des centaines d’heures à préparer ces configurations, sans compter le paramétrage de Zscaler, Cloudi-fi ou le temps perdu en migration à cause d’étourderies.

En prenant du recul sur ce projet, on s’aperçoit que cet investissement de développement initial a largement été rentabilisé dans la durée. Cela a aussi rendu le travail bien plus intéressant et moins répétitif.

TL;DR : L’automatisation, c’est cool.

Basile Garcher

--

--