Vagrant - Infrastructure Locale
Vue d’ensemble
Section intitulée « Vue d’ensemble »Pour éviter les limitations de Docker Desktop et garantir une isolation totale, nous utilisons des VMs pilotées par Vagrant. Deux providers selon le contexte :
| Provider | Usage | Avantage |
|---|---|---|
| VMware Desktop | VM de développement (WSL → VMware) | Performances I/O, stabilité |
| VirtualBox | VMs de formation (monitoring + SIEM) | Gratuit, multi-plateforme |
1. Architecture (VMware + WSL)
Section intitulée « 1. Architecture (VMware + WSL) »graph TB subgraph HOST["Machine Hôte (Windows)"] subgraph WSL["WSL2"] VAGRANT[Vagrant CLI] MKCERT[mkcert] GIT[Git] end subgraph VMWARE["VMware Workstation"] subgraph VM["Ubuntu 22.04 VM
192.168.56.10"] DOCKER[Docker] SERVICES[Services] end end end VAGRANT -->|"vagrant up"|VM DOCKER --> SERVICES style HOST fill:#1a1a2e,stroke:#16213e,color:#fff style WSL fill:#0f3460,stroke:#16213e,color:#fff style VMWARE fill:#533483,stroke:#16213e,color:#fff style VM fill:#e94560,stroke:#16213e,color:#fff
2. Prérequis VMware
Section intitulée « 2. Prérequis VMware »| Outil | Version | Installation |
|---|---|---|
| VMware Workstation | 17+ | vmware.com |
| Vagrant | 2.4+ | vagrantup.com |
| Vagrant VMware Plugin | Latest | vagrant plugin install vagrant-vmware-desktop |
| VMware Utility | Latest | vagrant-vmware-utility |
Bridge WSL → Windows
Section intitulée « Bridge WSL → Windows »Vagrant est installé sur Windows mais piloté depuis WSL. Ajoutez dans ~/.bashrc :
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"export PATH="$PATH:/mnt/c/Program Files/Vagrant/bin"alias vagrant='"/mnt/c/Program Files/Vagrant/bin/vagrant.exe"'source ~/.bashrcvagrant --version3. Vagrantfile de base (VMware)
Section intitulée « 3. Vagrantfile de base (VMware) »# -*- mode: ruby -*-# vi: set ft=ruby :
Vagrant.configure("2") do |config| config.vm.box = "bento/ubuntu-22.04"
config.vm.provider "vmware_desktop" do |v| v.gui = false v.allowlist_verified = true v.vmx["memsize"] = "4096" v.vmx["numvcpus"] = "2" v.vmx["displayName"] = "KDS-Dev-Local" end
config.vm.network "private_network", ip: "192.168.56.10" config.vm.hostname = "kds-dev-local"
config.vm.provision "shell", inline: <<-SHELL export DEBIAN_FRONTEND=noninteractive apt-get update && apt-get upgrade -y apt-get install -y curl git apt-transport-https ca-certificates \ software-properties-common gnupg lsb-release
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh usermod -aG docker vagrant rm get-docker.sh
systemctl enable docker && systemctl start docker SHELLendPour un environnement complet avec Dokploy et DNS local, voir Dokploy.
4. VMs de Formation (VirtualBox)
Section intitulée « 4. VMs de Formation (VirtualBox) »Configuration multi-VM pour la formation : monitoring + SIEM, provisionnées automatiquement via les scripts du repo server.
Prérequis
Section intitulée « Prérequis »# Debian/Ubuntusudo apt install virtualbox vagrant
# macOSbrew install virtualbox vagrantVagrantfile
Section intitulée « Vagrantfile »Vagrant.configure("2") do |config| config.vm.box = "debian/bookworm64" config.vm.box_check_update = true
config.vm.provider "virtualbox" do |vb| vb.memory = "2048" vb.cpus = 2 vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] end
# VM 1 - Monitoring config.vm.define "monitoring" do |monitoring| monitoring.vm.hostname = "kds-monitoring" monitoring.vm.network "private_network", ip: "192.168.56.10" monitoring.vm.provider "virtualbox" do |vb| vb.name = "KDS-Monitoring" end
monitoring.vm.provision "shell", inline: <<-SHELL apt-get update && apt-get install -y cloud-init git git clone https://git.kodetis.io/kds-formation/server.git /tmp/server cd /tmp/server sudo bash initialization/setup_initial_server.sh <<EOFtech-taafEOF sudo bash initialization/tools-install.sh sudo ./zsh/01_install_zsh_omzsh.sh <<EOFtech-taafEOF sudo ./zsh/02_install_zsh_tools.sh sudo -u tech-taaf cp /tmp/server/zsh/03_.zshrc /home/tech-taaf/.zshrc sudo -u tech-taaf cp /tmp/server/zsh/04_.p10k.zsh /home/tech-taaf/.p10k.zsh rm -rf /tmp/server SHELL end
# VM 2 - SIEM (plus de RAM) config.vm.define "siem" do |siem| siem.vm.hostname = "kds-siem" siem.vm.network "private_network", ip: "192.168.56.11" siem.vm.provider "virtualbox" do |vb| vb.name = "KDS-SIEM" vb.memory = "4096" end
siem.vm.provision "shell", inline: <<-SHELL apt-get update && apt-get install -y cloud-init git git clone https://git.kodetis.io/kds-formation/server.git /tmp/server cd /tmp/server sudo bash initialization/setup_initial_server.sh <<EOFtech-taafEOF sudo bash initialization/tools-install.sh sudo ./zsh/01_install_zsh_omzsh.sh <<EOFtech-taafEOF sudo ./zsh/02_install_zsh_tools.sh sudo -u tech-taaf cp /tmp/server/zsh/03_.zshrc /home/tech-taaf/.zshrc sudo -u tech-taaf cp /tmp/server/zsh/04_.p10k.zsh /home/tech-taaf/.p10k.zsh rm -rf /tmp/server SHELL endendAlternative : Cloud-Init
Section intitulée « Alternative : Cloud-Init »Pour un provisioning déclaratif, créez un fichier cloud-init.yml :
#cloud-configusers: - name: tech-taaf groups: sudo, docker shell: /bin/zsh sudo: ALL=(ALL) NOPASSWD:ALL
package_update: truepackages: [git, curl, wget, zsh, ca-certificates, gnupg]timezone: Indian/Reunion
runcmd: - curl -fsSL https://get.docker.com | sh - usermod -aG docker tech-taaf - git clone https://git.kodetis.io/kds-formation/server.git /tmp/server - sudo -u tech-taaf bash /tmp/server/zsh/01_install_zsh_omzsh.sh - sudo -u tech-taaf bash /tmp/server/zsh/02_install_zsh_tools.sh - rm -rf /tmp/server# Dans le Vagrantfileconfig.vm.provision "shell", inline: <<-SHELL cloud-init --file /vagrant/cloud-init.yml single --name allSHELL5. Commandes essentielles
Section intitulée « 5. Commandes essentielles »# Cycle de vievagrant up # Créer et démarrervagrant ssh # Connexion SSHvagrant halt # Arrêtervagrant reload # Redémarrervagrant destroy -f # Supprimer
# Provisioningvagrant provision # Re-exécuter le provisioningvagrant reload --provision
# Multi-VMvagrant up monitoring # VM spécifiquevagrant ssh siem # SSH vers une VM
# Debugvagrant statusvagrant global-statusvagrant up --debug 2>&1 | tee vagrant.log6. Troubleshooting
Section intitulée « 6. Troubleshooting »VMware : VM ne démarre pas
Section intitulée « VMware : VM ne démarre pas »vagrant plugin listvagrant plugin uninstall vagrant-vmware-desktopvagrant plugin install vagrant-vmware-desktop# Vérifier aussi le service VMware Utility dans services.mscVirtualBox : Réseau Host-Only
Section intitulée « VirtualBox : Réseau Host-Only »VBoxManage list hostonlyifs# Si vide :VBoxManage hostonlyif createWSL : Erreur de permissions
Section intitulée « WSL : Erreur de permissions »# Dans /etc/wsl.conf :[automount]options = "metadata"Ressources
Section intitulée « Ressources »Voir aussi :