Vagrantfile
Rama main · réplica de lectura del repositorio original.
VM_NAME = "avalug"
BOX_IMAGE = "debian/bookworm64"
DISKS = [
{ file: "disk_nvme.vdi", size_mb: 10 * 1024 }, # simulated NVMe 1TB -> 10G
{ file: "disk_hdd1.vdi", size_mb: 20 * 1024 }, # HDD 2TB -> 20G
{ file: "disk_hdd2.vdi", size_mb: 20 * 1024 }, # HDD 2TB -> 20G
{ file: "disk_hdd3.vdi", size_mb: 10 * 1024 }, # HDD 1TB -> 10G
]
Vagrant.configure("2") do |config|
config.vm.box = BOX_IMAGE
config.vm.hostname = VM_NAME
config.vm.network "private_network", ip: "192.168.56.15"
config.vm.provider "virtualbox" do |vb|
vb.name = VM_NAME
vb.memory = 4096
vb.cpus = 4
# SATA controller that ships with the box is usually "SATA Controller"
controller = "SATA Controller"
DISKS.each_with_index do |disk, i|
disk_path = File.join(File.dirname(__FILE__), ".vagrant", "disks", disk[:file])
unless File.exist?(disk_path)
vb.customize [
"createmedium", "disk",
"--filename", disk_path,
"--size", disk[:size_mb],
"--format", "VDI"
]
end
vb.customize [
"storageattach", :id,
"--storagectl", controller,
"--port", 1 + i, # port 0 is the boot disk
"--device", 0,
"--type", "hdd",
"--medium", disk_path
]
end
end
# Basic package prep so you can build the RAID/LVM/Docker setup by hand
# (or extend this script to fully automate it).
config.vm.provision "shell", inline: <<-SHELL
set -e
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y lvm2 mdadm parted xfsprogs curl gnupg make vim
test ! -f /dev/md/data && mdadm --create /dev/md/data -R --level 1 --raid-devices 2 /dev/sdc /dev/sdd
vgcreate vg_data /dev/md/data
vgcreate vg_backup /dev/sde
lvcreate -L 10G -n lv_data vg_data
lvcreate -L 9G -n lv_backup vg_backup
mkfs.ext4 /dev/vg_data/lv_data
mkfs.ext4 /dev/vg_backup/lv_backup
mkdir -p /mnt/{data,backup}
mount /dev/vg_data/lv_data /mnt/data
mount /dev/vg_backup/lv_backup /mnt/backup
SHELL
end