Méthode ScrumBan

Méthode Agile ScrumBan

Scrum est un framework, ou cadre de travail, qui inclut la notion d’itérations courtes (sprints) pour réaliser un produit morceau par morceau. Ces itérations sont rythmées par des réunions appelées « cérémonies », comme les daily scrum qui sont des réunions quotidiennes que je conserve en ScrumBan, les revues de sprint qui se produisent à la fin d’une itération ou encore les rétrospectives pour améliorer la façon de travailler de l’équipe.

Dans la méthodologie Scrum, trois rôles sont proposés et je les conserve en ScrumBan : le Product owner (PO), le Scrum master (SM) et l’équipe de réalisation (Team). Le PO est identifié en tant que détenteur du besoin. Dans le domaine des infrastructures, il est fréquent de proposer que ce rôle appartienne au client. Le SM est le garant de la méthodologie, mais il est aussi celui qui va débloquer les situations. Il facilite et provoque les événements Scrum lorsqu’il le faut (daily meeting, revues de sprint, planification…). Enfin, l’équipe de réalisation est là pour implémenter le produit selon les User Stories présentes dans le backlog de sprint.

Continuer la lecture de « Méthode ScrumBan »

Projet vs Produit

Projet vs Produit

Dans le modèle Waterfall, le cycle de développement et de livraison d’un système suit une liste d’étapes en ordre séquentiel. Cette façon de faire à l’avantage de fournir un plan projet définit dès le départ, ce qui résulte la plupart du temps en une gestion budgétaire précise. Chaque composante du système est développée séquentiellement, et menée à terme avant qu’une autre fonctionnalité ne soit programmée. C’est un modèle qui a été systématiquement utilisé, mais qui présente plusieurs lacunes importantes, dont il conviendrait de s’affranchir lorsque le contexte client le permet.

En général, l’analyse des besoins du client se fait conjointement avec lui, sur une période qui pourra varier considérablement et s’étendre parfois jusqu’à plusieurs semaines, voire plusieurs mois. Or, ce modèle Waterfall ne tient pas compte de la variable temps. Une fonctionnalité mise en place, testée puis livrée dans le système, arrivera à destination plusieurs semaines ou mois après qu’elle ait été définie et pensée, pour répondre à un besoin au moment où l’analyse a été faite. Cependant, la réalité du client peut changer rapidement. Ce modèle d’implémentation ne tient pas compte des besoins changeants du client, de sa réalité d’affaire qui est en mouvement au fil du temps, et des technologies émergentes. Le résultat est que la fonctionnalité est bien livrée selon les spécifications initialement documentées, mais ne correspond plus nécessairement aux besoins réels du client.

Continuer la lecture de « Projet vs Produit »

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 Juniper Networks

Automatisation Juniper Networks

Dernière modification le 11 janvier 2020

Lorsqu’on aborde l’automatisation de réseau Junos, on peut avoir l’impression qu’il y des méthodes redondantes, tellement il y a de possibilités. Juniper Networks a intégré les concepts utilisés dans l’automatisation très tôt dans le système Junos et l’approche « Network as Code » est même ancrée dans l’ADN de l’entreprise.

Chacune des approches a sa raison d’être et de persister. On peut aisément penser que si des méthodes en avaient remplacé d’autres, du ménage aurait fait depuis longtemps dans le système Junos.

Voici ma vision sur la façon de répondre à certaines situations qui pourraient être rencontrées :

Continuer la lecture de « Automatisation Juniper Networks »

Interface web Python

Python frameworks Flask vs Django

Dernière modification le 11 janvier 2020

Lorsqu’il est nécessaire de mettre une interface CLI sur une application Python, c’est le package Click qui a ma préférence, mais quand il est souhaitable de mettre une interface web sur une application Python, mon choix oscille en permanence entre le micro framework Flask et le framework full-stack Django.

C’est le contexte et l’objectif visé (parfois aussi l’humeur du jour…) qui déterminent la meilleure stratégie. Démarrer avec Flask est très facile et la courbe d’apprentissage (subjective et empirique comme la plupart des lois scalantes) est rapide. Cependant, si l’objectif est de développer une application complète, on est rapidement obligé de rajouter des librairies en tant qu’extensions. D’un autre côté, la structuration mise en place par Django est un peu plus difficile à intégrer, mais tout est disponible et inclus pour réaliser une application complète, même une interface d’admin qui se génère automatiquement.

Continuer la lecture de « Interface web Python »

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 »

Kubernetes

Orchestration de conteneurs Kubernetes

Dernière modification le 11 janvier 2020

Très rapidement, je me suis intéressé à Docker pour faire de la conteneurisation et plus particulièrement pour déployer des architectures microservices ou cloud-native. Dès que Swarm a été intégré dans la distribution Docker-ce, c’est devenu mon orchestrateur de prédilection. N’ayant pas été le seul a raisonner comme ça, il était facile de trouver de nombreux exemples Dockerfile et Docker Compose pour travailler dans le domaine du réseau.

A postériori, force est de constater que Docker a perdu la bataille des orchestrateurs qui n’aurait pas du être la sienne. Kubernetes (K8S) a été largement adopté pour l’orchestration de conteneurs.

Continuer la lecture de « Kubernetes »

Junos REST API

Juniper Junos REST API

Dernière modification le 11 janvier 2020

Comme déjà évoqué, il existe plusieurs façons d’accéder aux informations et de les configurer sur des équipements Juniper Networks. Une de ces méthodes est de passer par les API REST (Representational State Transfer). Comme pour le CLI et NETCONF, les connexions REST, appelée parfois RESTful, se font au travers du process mgd. REST est considéré comme étant stateless car aucun contexte client n’est stocké sur le serveur entre les requêtes. Chaque requête contient toutes les informations nécessaires pour executer la requête et l’état de la session est conservé sur le client.

Junos REST API mgd
Continuer la lecture de « Junos REST API »