work-vm/Vagrantfile

76 lines
2.3 KiB
Text
Raw Permalink Normal View History

# -*- mode: ruby -*-
# vi: set ft=ruby :
def env_or_default(key, value)
if ENV.key?(key) then
return ENV[key]
else
return value
end
end
2024-12-30 10:28:15 +01:00
# Read parameters from the environment.
vm_cpus = env_or_default("VM_CPU", 4)
vm_memory = env_or_default("VM_MEMORY", 16 * 1024)
2024-12-30 10:28:15 +01:00
# More parameters from the environment. These are only used during provisioning.
apt_proxy = env_or_default("APT_PROXY", "")
vm_locale = env_or_default("VM_LOCALE", "en_GB.UTF-8")
chezmoi_source = env_or_default("CHEZMOI_SOURCE", "")
vmnet_back_addr = env_or_default("VMNET_BACK_ADDR", "10.0.0.1")
vmnet_front_addr = env_or_default("VMNET_FRONT_ADDR", "10.0.1.1")
vmnet_domain = env_or_default("VMNET_DOMAIN", "envdev.test")
vmnet_bind_key_id = env_or_default("VMNET_BIND_KEY_ID", "terraform.#{vmnet_domain}")
vmnet_bind_key = env_or_default("VMNET_BIND_KEY", "")
Vagrant.configure("2") do |config|
config.vagrant.plugins = ["vagrant-libvirt"]
config.ssh.forward_agent = true
config.ssh.forward_x11 = true
config.vm.box = "generic/debian12"
config.vm.hostname = "workvm"
config.vm.box_check_update = false
config.vm.provider "libvirt" do |lv|
lv.memory = vm_memory
lv.cpus = vm_cpus
lv.graphics_type = "spice"
lv.video_type = "virtio"
lv.nested = true
lv.disk_driver :discard => "unmap"
end
config.vm.provision "shell",
reboot: true,
inline: <<-EOF
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true;
apt-get remove -y --purge resolvconf
EOF
config.vm.provision "shell",
path: "scripts/00-network.sh",
reboot: true,
env: { "APT_PROXY" => apt_proxy }
config.vm.provision "shell",
path: "scripts/01-os-basics.sh",
reboot: true
config.vm.provision "file",
source: "ansible",
destination: "/var/cache/provision/playbook"
config.vm.provision "shell",
path: "scripts/02-provision.sh",
reboot: true,
privileged: false,
env: {
"VM_LOCALE" => vm_locale,
"CHEZMOI_SOURCE" => chezmoi_source,
"VMNET_BACK_ADDR" => vmnet_back_addr,
"VMNET_FRONT_ADDR" => vmnet_front_addr,
"VMNET_DOMAIN" => vmnet_domain,
"VMNET_BIND_KEY_ID" => vmnet_bind_key_id,
"VMNET_BIND_KEY" => vmnet_bind_key
}
config.vm.synced_folder '.', '/vagrant', :disabled => true
end