This article is available in French.
1. À quoi sert Vagrant ? #
Des environnements identiques pour toute l'équipe.
Le problème #
« Ça marche sur ma machine » : chaque développeur installe ses outils à la main, avec des versions différentes du système, des bibliothèques et des services. Les écarts avec la production se découvrent tard.
Vagrant (HashiCorp) décrit un environnement de travail dans un fichier texte, le Vagrantfile, versionné avec le code. Une seule commande, vagrant up, crée la même machine virtuelle sur tous les postes, la configure et la rend accessible.
Les cas d'usage #
- Environnement de développement identique pour toute l'équipe, proche de la production.
- Laboratoire jetable pour tester un rôle Ansible, une mise à jour ou une configuration réseau.
- Formation et démonstrations : un environnement prêt en quelques minutes.
- Tester plusieurs systèmes (Ubuntu, Rocky Linux, Windows) sans les installer.
2. Le vocabulaire #
Les mots qui reviennent dans toute la formation.
Les notions clés #
| Terme | Définition | Exemple |
|---|---|---|
| Box | Image de base (système préinstallé) téléchargée une fois puis réutilisée | bento/ubuntu-24.04 |
| Provider | Logiciel qui exécute la machine | VirtualBox, libvirt (KVM), Hyper-V, VMware, Docker |
| Provisioner | Outil qui configure la machine après son démarrage | shell, file, Ansible, Docker, Puppet |
| Vagrantfile | Fichier Ruby qui décrit la ou les machines | à la racine du projet |
| Synced folder | Dossier partagé entre l'hôte et la machine | le projet est monté sur /vagrant |
| Plugin | Extension de Vagrant | vagrant-libvirt, vagrant-hostmanager |
Un premier Vagrantfile #
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-24.04"
config.vm.hostname = "dev"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048
vb.cpus = 2
end
config.vm.provision "shell", inline: "apt-get update && apt-get install -y nginx"
end3. Le cycle de vie #
Créer, utiliser, arrêter, détruire.
Les commandes #
vagrant init bento/ubuntu-24.04 # crée un Vagrantfile minimal
vagrant up # crée et démarre (puis provisionne la première fois)
vagrant status # état des machines du projet
vagrant ssh # shell dans la machine
vagrant provision # relance les provisioners
vagrant reload --provision # redémarre en appliquant les changements du Vagrantfile
vagrant halt # arrêt propre
vagrant destroy -f # suppression complète
vagrant global-status --prune # toutes les machines Vagrant du posteVagrant face aux autres outils #
| Outil | Rôle | Quand le préférer |
|---|---|---|
| Vagrant | Environnements de développement en machines virtuelles | Besoin d'un vrai système complet (noyau, systemd, réseau) |
| Docker / Compose | Conteneurs applicatifs | Applications conteneurisées, démarrage en secondes |
| Packer | Construction d'images (boxes, AMI) | Produire les images de base |
| Terraform | Infrastructure de production (cloud) | Créer des ressources durables chez un fournisseur |
Bonne Pratique : Vagrant est fait pour le poste du développeur et les laboratoires, pas pour la production : utilisez Terraform et des images Packer pour cela.
My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
Les plugins Vagrant : étendre providers, provisioners et commandes
Comprendre le système de plugins de Vagrant : ce qu'un plugin peut ajouter (provider, provisioner...
Bonnes pratiques Vagrant : des environnements reproductibles et rapides
Bonnes pratiques Vagrant : Vagrantfile versionné, boxes épinglées, provisioning idempotent, multi...
Vagrant multi-machines : déployer un cluster Docker Swarm prêt à l'emploi
Construire avec un seul Vagrantfile un cluster Docker Swarm de trois nœuds (un manager, deux work...
Partager un environnement Vagrant : ngrok et le plugin vagrant-share
Rendre une application qui tourne dans une machine Vagrant accessible à un collègue ou un client ...
Préparer la certification HashiCorp Certified: Terraform Associate
Guide de préparation au Terraform Associate : format, objectifs officiels (concepts de l'IaC, flu...
Ansible : gérer son infrastructure avec des playbooks (Infrastructure as Code)
Écrire des playbooks de production : structure d'un projet, plays, handlers, tags, strategy seria...
Ansible : aller plus loin (tests, qualité, CI/CD et performance)
Industrialiser Ansible : ansible-lint, yamllint, Molecule, intégration continue, collections, exe...
Dynatrace Credential Vault : Sécuriser et gérer vos secrets
Découvrez comment l'application Credential Vault de Dynatrace permet de gérer de manière sécurisé...
Ansible : structurer son code avec les rôles
Créer, organiser et réutiliser des rôles Ansible : arborescence, defaults, tasks, handlers, templ...