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
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.
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 :
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
📕 Apprendre à utiliser Ansible (OpenClassRoom)
📕 Apprendre à utiliser Ansible (MicroLinux)
Debug
Outils
Puppet
Puppet est un outil d'orchestration comme Ansible, mais utilisant un agent sur les nœuds
Salt
Salt est un outil d'orchestration comme Ansible, mais utilisant un agent sur les nœuds
Automatisation de flux
n8n
n8n est un workflow d'automatisation Open Source très puissant basé sur NodeJS.
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).
[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…)
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
