work-vm/Vagrantfile

75 lines
2.3 KiB
Ruby
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- 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
# Read parameters from the environment.
vm_cpus = env_or_default("VM_CPU", 4)
vm_memory = env_or_default("VM_MEMORY", 16 * 1024)
# 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