Contributions Open Source

Mes contributions à la communauté

Logo Github

Cette page recense quelques-unes de mes contributions au monde Open Source. Par contribution, je fais référence aux:

  • Projets GitHub: tout projet que je juge utile de partager à la communauté
  • Issues créés: il s’agit d’issues concernant les projets avec lesquels j’ai travaillé à un moment donné.
  • Pull Requests: il peut s’agir d’ajout de nouvelles fonctionnalités, fix etc…

Elle sera mise à jour régulièrement.

Projets

Quelques-uns de mes projets:

  • Ansible Playbook Grapher: Outil en ligne de commande permettant de générer des graphes à partir de Playbook Ansible. Permet d’avoir une vision globale de toutes les tâches d’un playbook Ansible.
    Exemple de sortie Ansible Playbook Grapher
  • Vagrant To Ansible Inventory : Outil en ligne de commande produisant un inventaire Ansible à partir de la configuration Vagrant (vagrant ssh-config). Utile quand on utilise des machines virtuelles Vagrant pour tester des playbooks Ansible.
  • BlockadeRunner : Jeu de type shoot’em up à defilement horizontal réalisé en C avec SDL (rendu graphique) et FMOD Ex (gestion du son) dans le cadre d’un projet d’école à l’Université Lyon 1 Claude Bernard. Projet réalisé avec un camarade de classe.
    Capture d’écran BlockadeRunner
  • BST : Implémentation en C de différents arbres binaires de recherche: AVL et arbre rouge noir. Génération de réprésentation d’arbres avec Graphviz et en Ascii.
    Exemple de sortie BST
  • PRPI : Projet d’école visant à développer un plugin Intellij permettant d’éditer un projet à plusieurs en temps réel. Je suis intervenu sur la partie “interaction avec l’éditeur de texte”.
  • Terraform Jenkins AWS Fargate: Stack Terraform permettant de déployer Jenkins et ses agents sur Fargate.

Issues

Quelques issues que j’ai remontées sur différents dépôts sur Github:

  • Ansible #24226 : Report d’un bug dans le module Ansible expect qui n’était pas compatible avec Python3.
  • Mycli #192 : Impossibilité de se connecter avec le client Mysql Mycli ( que je vous recommande en passant) à une base de données sans spécifier le port.
  • Hugo Academic #59 : Proposition d’amélioration au thème Hugo Academic pour “mettre en valeur” les éléments du menu. Il s’agit du thème utilisé pour ce blog.
  • Django Maintenance Mode #13 : Report d’un bug rendant inaccessible lors du rendu des templates HTML certaines variables que Django mettait à disposition.
  • Grafana #8345: Paramètres LDAP manquant dans la documentation de Grafana.
  • Telegraf #2839 : Report d’un bug entrainant le non-respect de l’intervalle de collection Telegraf quand le processus est rechargé (service telegraf reload).
  • Intellij-hcl #211 : Report d’un bug dans le code généré par le plugin Terraform pour Intellij. Le code généré n’était pas compatible avec la version 0.12 de Terraform.
  • Terraform provider MongoDB Atlas #189 : Bug sur le provider MongoDB Atlas qui ne recrée pas un cluster quand on change son nom.
  • Provider Terraform pour FireHydrant #120 pour l’ajout de ressource externe permettant de référencer un service PagerDuty (par exemple).
  • SOCI Snapshotter #829 Bug dans le snapshotter SOCI fait par AWS. Ce snapshotter est un plugin pour containerd permettant de démarrer des conteneurs plus rapidement en faisant du lazy loading.

Dans la mesure du possible, j’essaie de contribuer directement sans créer une n-ième issue.

Pull requests

  • Ansible #46435 : Ajout d’Ansible Playbook Grapher dans la documentation officielle d’Ansible. Assignée à la version 2.8 d’Ansible.
  • Ansible Role Jenkins #59 : Mise à jour d’un rôle Ansible installant Jenkins pour prendre en compte la réorganisation de la page de login de Jenkins à partir de la version 2.128.
  • Django Maintenance Mode #9 : Ajout d’un context processor dans Django Maintenance Mode permettant de savoir si nous sommes en mode maintenance dans les templates HTML de manière transparente.
  • Hugo Academic #823 : Proposition de réduction de la taille des html div liées aux skills sur les petits écrans. Pull request rejeté.
  • Grafana #8400 et Grafana #8675: Mise à jour de la documentation de Grafana.
  • MapIF #5 : Ajout du clustering à une map Leaflet. Ce projet avait pour but de référencer sur une carte l’ensemble des ingénieurs diplômés de notre département informatique à l’INSA Lyon.
  • Moto #1545 : Fix d’une implémentation incorrecte dans Moto (bibliothèque Python de mocking pour AWS) concernant l’identification des APIs Keys qui se faisaient par leur valeur au lieu de leur identifiant.
  • Oh My ZSH #7838 : Fix du plugin AWS pour Oh My ZSH en nettoyant correctement les variables d’environnement quand la commande asp est utilisée sans arguments.
  • Chalice #1155 : Ajout du paramètre description au cloudwatch event crée par Chalice
  • Terraform provider MongoDB Atlas #166 : Correction de la documentation suite à la montée de version du provider à la version 0.4. La commande d’importation d' un whitelist n’était pas à jour.
  • Jenkins Configuration as Code #1402: Fix d’un bug empêchant le chargement de la configuration à partir d’URL contenant des caractères spéciaux.
  • AKHQ #356: Correction d’une petite faute d’orthographe dans AKHQ (une interface web pour Kafka).
  • Oh My ZSH #9226: Auto-complétion pour Terraform 0.13.
  • Terraform AWS VPC module #573 : Fix du module communautaire AWS VPC pour supporter les nouveaux endpoints de type interface pour S3. Sans ce fix, il était impossible d’utiliser le module suite à l’ajout de cet endpoint par AWS. Cette correction a été faite dans l’urgence au vu de sa criticité et du nombre de personnes qui utilise ce module. D’autres PRs ont été faites après pour apporter des améliorations et faire de telle sorte que le module puisse fonctionner avec des versions antérieures (<= 2.70) du provider AWS.
  • Terraform AWS provider #20835 : Mise à jour de la documentation pour les statistiques utilisables pour les alarmes CloudWatch. La documentation suggérait qu’on ne pouvait utiliser qu’un sous ensemble des métriques disponibles pour les MetricData.
  • Terraform AWS provider #20826 : Mise à jour de la documentation pour rajouter le champ account_id qui permet de créer des alarmes cross account. La feature avait été implémentée sans que la documentation ait été mise à jour. J’ai découvert par hasard que la feature était disponible grâce à l’autocomplétion de mon IDE 😄…
  • AWS Console Services – Alfred Workflow #51: Mise à jour du lien permettant l’accès à la console AWS d’OpenSearch.
  • Terraform AWS S3 module #191 (PR ignorée ): Ajout d’un nouvel output pour avoir une dépendance sur aws_s3_bucket_versioning et ainsi pouvoir créer des objets S3 dans la même stack une fois que le versioning est bien activé et après le délai recommandé de 15mn par AWS.
  • Tfsec Sarif Action #39: Fix d’un bug qui empêchait d’installer des versions spécifiques de Tfsec.

Autres

  • Mise à jour la documentation du plugin AWS ECS pour Jenkins : la permission ecs:DeregisterTaskDefinition était manquante. L’absence de cette permission faisait échouer les jobs qui utilisent la syntaxe déclarative des agents dans le Jenkinsfile.
  • Workaround pour le plugin HCL des IDE Jetbrains pour localiser les modules téléchargés avec Terraform >= 1.1.0
Mohamed El Mouctar HAIDARA
Mohamed El Mouctar HAIDARA
Senior Platform Engineer
comments powered by Disqus