Environnement de lab multi-VM pour les formations Linux, Docker, Docker Swarm, Ansible et Kubernetes. Trois VMs Debian reproductibles, provisionnées à la demande selon le TP en cours.
| Parcours | Dossier | Contenu | Profil de VM |
|---|---|---|---|
ansible/ |
9 TPs — de la commande ad-hoc au TP noté WordPress multi-instances | base |
|
| 🐳 Docker Swarm | swarm/ |
Cluster Swarm, services, stack WordPress sur GlusterFS | docker |
| ☸️ Kubernetes niveau 1 | k8s/ |
k3s, objets de base, Helm, dashboard, DemoApp | base |
| ☸️ Kubernetes niveau 2 | k8s/niveau2/ |
12 TPs — kubeadm, Cilium, stockage, backup, monitoring, sécurité, GitOps | kubeadm |
| 🏗️ Harbor | harbor/ |
Registry privée, cache proxy, scan de vulnérabilités | docker |
git clone <ce-dépôt> && cd VagrantLab
# Choisir le profil selon le parcours suivi
LAB_PROFILE=base vagrant up # Linux, Ansible, k3s
LAB_PROFILE=docker vagrant up # Docker, Swarm, Harbor
LAB_PROFILE=kubeadm vagrant up # Kubernetes niveau 2
vagrant ssh box01Le provisionnement est modulaire — un seul socle commun, puis un module par
usage. Détails complets : bootstrap/README.md.
| Profil | Ce qui est installé |
|---|---|
base (défaut) |
DNS, outils, /etc/hosts, swap off, clients iSCSI / NFS / GlusterFS |
docker |
base + Docker CE, Buildx, Compose v2 |
kubeadm |
base + containerd, crictl, kubelet / kubeadm / kubectl — sans init ni join |
⚠️ dockeretkubeadms'excluent : les deux configurent containerd différemment.
Un profil différent par machine se déclare avec la clé :profile dans le
tableau servers du Vagrantfile.
| Machine | IP | Notes |
|---|---|---|
| Poste de formation | 192.168.56.1 |
Manager Swarm, serveur k3s selon les TPs |
box01 |
192.168.56.10 |
Control plane Kubernetes |
box02 |
192.168.56.20 |
Worker |
box03 |
192.168.56.30 |
Worker |
box04 |
192.168.56.40 |
Réservé (résolu dans /etc/hosts) |
nfs-server |
192.168.56.50 |
Vagrantfile — à décommenter pour le TP NFS |
| Pool LoadBalancer | .200 → .230 |
Attribué par Cilium (Kubernetes niveau 2) |
Chaque VM : Debian 13 (bento/debian-13), 2 vCPU, 2 Go de RAM par défaut —
ajustable dans le Vagrantfile.
vagrant up # démarrer le lab
vagrant up box01 # une seule machine
vagrant status # état des VMs
vagrant halt # arrêter sans détruire
vagrant destroy -f # tout détruire
vagrant provision # rejouer le provisionnement
LAB_PROFILE=kubeadm vagrant provision # changer de profil sur des VMs existantesvagrant ssh box01 # depuis le dossier du Vagrantfile
vagrant ssh-config > vagrant-ssh # exporter la configuration SSH
ssh -F vagrant-ssh box01 # se connecter depuis n'importe oùCMD="docker ps"
for i in box01 box02 box03; do
echo "=== $i ==="
vagrant ssh $i -- sudo $CMD
doneLe lab utilise par défaut un cache Harbor interne
(reg.ntl.nc) pour éviter le rate limit de Docker Hub. Hors de ce réseau,
désactivez-le :
LAB_REGISTRY_MIRROR="" LAB_PROFILE=kubeadm vagrant upAutres variables d'ajustement (version de Kubernetes, de crictl, image
sandbox) : voir bootstrap/README.md.
VagrantLab/
├── Vagrantfile définition des VMs et du profil de provisionnement
├── bootstrap.sh point d'entrée du provisionnement
├── bootstrap/ modules : base.sh, docker.sh, kubeadm.sh
│
├── ansible/ 🅰️ parcours Ansible (9 TPs)
├── swarm/ 🐳 parcours Docker Swarm
├── harbor/ 🏗️ registry privée
└── k8s/ ☸️ Kubernetes
├── startup/ objets de base (niveau 1)
├── dashboard/ helm/ kaniko/ netpolicy/ postgres/ longhorn/
├── demoapp/ TP de synthèse niveau 1
├── wordpress/ WordPress + GlusterFS + HAProxy
├── cleanup/ désinstallation de k3s
└── niveau2/ 🎓 parcours avancé (12 TPs + annexe)
├── manifests/ manifestes autonomes des TPs 10 et 11
└── mariadb-operator/ manifestes du TP 09
| Symptôme | Piste |
|---|---|
vagrant up échoue sur le réseau host-only |
Vérifier que 192.168.56.0/24 est autorisé dans /etc/vbox/networks.conf |
Provisionnement en échec sur apt-get |
DNS : le socle force 8.8.8.8 / 1.1.1.1, à adapter derrière un proxy d'entreprise |
ImagePullBackOff partout |
Cache Harbor injoignable → LAB_REGISTRY_MIRROR="" |
| Interface réseau introuvable | eth1 ou enp0s8 selon la version de VirtualBox — ip -br addr | grep 192.168.56. |
| VM lente ou qui swappe | Le socle désactive le swap ; augmenter :ram dans le Vagrantfile |
Ce dépôt est un environnement de formation. Il contient volontairement des
raccourcis à ne pas reproduire en production : mots de passe en clair,
no_root_squash sur NFS, --kubelet-insecure-tls, absence de TLS, admin/admin.
Chaque TP signale ces points au moment où ils apparaissent.