75 lines
2.3 KiB
Ruby
75 lines
2.3 KiB
Ruby
# -*- 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
|