Vagrantfile

Note de lecture générée automatiquement

Le vrai fichier est scripts/virtualisation/Vagrantfile (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 proxy Squid (2 VM)
  • Lancer (dans le dossier scripts/virtualisation/) : vagrant up (dans ce dossier)
  • Fiche : V04 - Vagrant
  • Retour : 00 - Tous les scripts

Code

# -*- mode: ruby -*-
# =============================================================================
# Vagrantfile — Labo proxy : 1 serveur Squid (+ Apache pour la page de blocage)
#               et 1 client, sur un réseau privé 192.168.56.0/24.
#   vagrant up            → crée et configure les 2 VM
#   vagrant ssh proxy     → se connecter au proxy
#   vagrant ssh client    → se connecter au client (déjà configuré pour le proxy)
#   vagrant destroy -f    → tout supprimer
# Fournisseur : VirtualBox par défaut (ou : vagrant up --provider=libvirt)
# =============================================================================
Vagrant.configure("2") do |config|
  config.vm.box = "debian/bookworm64"
 
  # ---------------------------------------------------------------- PROXY ---
  config.vm.define "proxy" do |proxy|
    proxy.vm.hostname = "squid-proxy"
    proxy.vm.network "private_network", ip: "192.168.56.10"
    proxy.vm.provider "virtualbox" do |vb|
      vb.memory = 1024
      vb.cpus = 1
    end
    proxy.vm.provision "shell", inline: <<-SHELL
      set -e
      export DEBIAN_FRONTEND=noninteractive
      apt-get update -q
      apt-get install -y -q squid apache2 curl
      printf ".facebook.com\n.tiktok.com\n" > /etc/squid/blacklist_domaines.txt
      printf "youtube\\\\.com/shorts\n" > /etc/squid/blacklist_urls.txt
      cat > /etc/squid/squid.conf <<'CONF'
http_port 3128
acl reseau_local src 192.168.56.0/24
acl ports_ssl port 443
acl ports_surs port 80 443
acl CONNECT method CONNECT
acl domaines_interdits dstdomain "/etc/squid/blacklist_domaines.txt"
acl urls_interdites url_regex -i "/etc/squid/blacklist_urls.txt"
http_access deny !ports_surs
http_access deny CONNECT !ports_ssl
http_access deny domaines_interdits
http_access deny urls_interdites
http_access allow reseau_local
http_access deny all
deny_info http://192.168.56.10/bloque.html domaines_interdits
deny_info http://192.168.56.10/bloque.html urls_interdites
cache_dir ufs /var/spool/squid 500 16 256
CONF
      echo '<!doctype html><meta charset="utf-8"><h1>Accès bloqué</h1><p>Site interdit par la politique de sécurité.</p>' > /var/www/html/bloque.html
      squid -k parse
      systemctl restart squid
    SHELL
  end
 
  # --------------------------------------------------------------- CLIENT ---
  config.vm.define "client" do |client|
    client.vm.hostname = "squid-client"
    client.vm.network "private_network", ip: "192.168.56.11"
    client.vm.provider "virtualbox" do |vb|
      vb.memory = 512
      vb.cpus = 1
    end
    client.vm.provision "shell", inline: <<-SHELL
      apt-get update -q && apt-get install -y -q curl
      cat > /etc/profile.d/proxy.sh <<'PROXY'
export http_proxy="http://192.168.56.10:3128"
export https_proxy="http://192.168.56.10:3128"
export no_proxy="localhost,127.0.0.1"
PROXY
    SHELL
  end
end