Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

208 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧪 VagrantLab

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.


🗺️ Les parcours

Parcours Dossier Contenu Profil de VM
🅰️ Ansible 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

🚀 Démarrage rapide

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 box01

🥾 Les profils de provisionnement

Le 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 / kubectlsans init ni join

⚠️ docker et kubeadm s'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.


🌐 Plan d'adressage

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 ⚠️ Commenté dans le 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.


⌨️ Commandes utiles

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 existantes

SSH

vagrant 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ù

Exécuter une commande sur toutes les box

CMD="docker ps"
for i in box01 box02 box03; do
  echo "=== $i ==="
  vagrant ssh $i -- sudo $CMD
done

📦 Cache d'images (Harbor)

Le 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 up

Autres variables d'ajustement (version de Kubernetes, de crictl, image sandbox) : voir bootstrap/README.md.


🗂️ Structure du dépôt

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

🔧 Dépannage

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

⚠️ Avertissement

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages