Automatisation & CI/CD

Méthodes et outils de Développement et d'Intégration Continue et Automatisation de tâches d'administration.

Versionning

Git

Git est un client pour les logiciels de versioning basés sur Gitlab ou GitHub

Utiliser Git pour push du code sur un repo

Ohshitgit : résoudre des problèmes courants avec Git

Gitlab

GitLab est un logiciel de versioning de code open source auto-hébergeable, avec une interface web et des fonctionnalités d'aide au développement et à l'intégration logicielle.

Installation de Gitlab via docker compose

Générer des clés SSH pour gitlab^

Intégration continue

Jenkins

Jenkins est un outil d'intégration continue open source. Il permet d'automatiser le workflow d'intégration d'un logiciel étape par étape :

Exemple de workflow d'intégration logicielle automatisé avec Jenkins

Dans l'exemple ci-dessus, un programme Java est en cours de développement. Jenkins détecte de nouvelles modifications sur le dépôt GitLab et récupère la dernière version du code produite et testée localement par le développeur. Maven intervient pour le compiler, puis effectue les tests unitaires afin de vérifier que le programme fonctionne correctement. Un second intervenant, SonarQube, analyse la qualité du code dans le but de déceler des vulnérabilités ou des problèmes de performance. Enfin, Jenkins génère un artefact du programme, prêt à être déployé, et le met à disposition des intégrateurs. Ce pipeline est exécuté à chaque nouveau push de code sur le dépôt et notifie le développeur de l'issue de celui-ci (s'il y a erreur ou pas).

SonarQube

SonarQube est un outil open source d'analyse de code. Il permet de vérifier la qualité d'un code source afin d'y déceler des vulnérabilités ou des problèmes de performances.

Orchestration de configurations

Ansible

Ansible est un outil d'orchestration permettant de déployer des configurations sur des nœuds distants via le protocole SSH. Son intérêt principal réside dans son approche déclarative qui simplifie le développement des playbooks :

  • Lisibilité : Les playbooks décrivent clairement l’état souhaité, sans se perdre dans les détails d’implémentation.
  • Idempotence : Les playbooks peuvent être exécutés plusieurs fois sans risque, Ansible ne réalisant que les changements nécessaires.
  • Maintenabilité : Les playbooks sont plus faciles à maintenir et à faire évoluer que des scripts shell complexes.

Formations / tutoriels

Debug

Outils

Puppet

Puppet est un outil d'orchestration comme Ansible, mais utilisant un agent sur les nœuds

Déploiement de configurations Linux avec Puppet

Salt

Salt est un outil d'orchestration comme Ansible, mais utilisant un agent sur les nœuds

📖 Documentation officielle de Salt

Automatisation de flux

n8n

n8n est un workflow d'automatisation Open Source très puissant basé sur NodeJS.

Automatisez vos flux avec n8n et NodeRed

Tout savoir sur n8n

Installation de n8n

Désactiver le cookie sécurisé

Déploiement de machines virtuelles

Outils d'automatisation de déploiement de machines virtuelles.

Vagrant

Vagrant est un utilitaire de déploiement et de provisionnement automatique de machines virtuelles locales. Il permet de créer des environnements de tests ou de formation très rapidement à partir d'images systèmes existantes (générées avec Packer).

Commencer avec Vagrant

[Débug] Ajouter une carte réseau en accès par pont (bridge) à une VM avec Vagrant

Packer

Packer permet de générer des images systèmes préconfigurées pour être déployées sur une plateforme de virtualisation (VirtualBox, VMWare, Microsoft Azure, AWS EC2…)

Découverte de Packer

Terraform

Terraform permet d'automatiser le déploiement d'environnements informatiques préconfigurés dans le cloud.

📖 Documentation officielle Terraform

Terraformer : Créer un fichier Terraform à partir d'une infrastructure existante