Vagrantfile-tp-deploiement

Note de lecture générée automatiquement

Le vrai fichier est scripts/virtualisation/Vagrantfile-tp-deploiement (Obsidian n’affiche pas les scripts eux-mêmes). Ne modifie pas cette note : modifie le script, puis relance python3 generer_vues_obsidian.py dans le dossier scripts.

  • À quoi il sert : Labo TP déploiement : tp-web + tp-bdd sous KVM (2 VM)
  • Lancer (dans le dossier scripts/virtualisation/) : cp Vagrantfile-tp-deploiement ~/labo-tp-deploiement/Vagrantfile (puis vagrant up dans ce dossier : labo TP deploiement sous KVM, doc V07)
  • Fiche : V07 - Vagrant et KVM (labo du TP déploiement)
  • Retour : 00 - Tous les scripts

Code

# -*- mode: ruby -*-
# Labo du TP deploiement : 2 VM Debian 12 sous QEMU/KVM (provider libvirt)
#   vagrant up                      -> cree et demarre les 2 VM
#   vagrant status                  -> etat des VM
#   vagrant halt                    -> eteint les VM
#   vagrant snapshot restore propre -> revient a l'etat de depart (VM eteintes)
#   puis vagrant up                 -> les redemarre
# les VM sont vides : c'est le script deploiement.sh qui installe tout
# les commandes vagrant se lancent dans le dossier qui contient ce fichier
 
# notre cle ssh publique, copiee dans les VM pour faire "ssh vagrant@IP" sans mot de passe
CLE_PUBLIQUE = File.read(File.expand_path("~/.ssh/id_ed25519.pub")).strip
 
Vagrant.configure("2") do |config|
  config.vm.box = "debian/bookworm64"
 
  # pas de dossier partage /vagrant (inutile pour le TP)
  config.vm.synced_folder ".", "/vagrant", disabled: true
 
  config.vm.provider "libvirt" do |libvirt|
    # connexion systeme : les VM apparaissent dans virt-manager
    libvirt.uri = "qemu:///system"
    # nom des VM dans virt-manager : tp-web et tp-bdd (sans prefixe)
    libvirt.default_prefix = ""
    libvirt.memory = 1024
    libvirt.cpus = 1
  end
 
  # on ajoute notre cle dans /home/vagrant/.ssh/authorized_keys (si elle n'y est pas deja)
  config.vm.provision "shell", privileged: false, inline: <<-SHELL
    grep -qF "#{CLE_PUBLIQUE}" ~/.ssh/authorized_keys || echo "#{CLE_PUBLIQUE}" >> ~/.ssh/authorized_keys
  SHELL
 
  # VM 1 : web + wordpress
  config.vm.define "tp-web" do |web|
    web.vm.hostname = "tp-web"
    web.vm.network "private_network", ip: "192.168.56.10",
      libvirt__network_name: "tp-deploiement", libvirt__forward_mode: "none"
  end
 
  # VM 2 : bdd
  config.vm.define "tp-bdd" do |bdd|
    bdd.vm.hostname = "tp-bdd"
    bdd.vm.network "private_network", ip: "192.168.56.11",
      libvirt__network_name: "tp-deploiement", libvirt__forward_mode: "none"
  end
end