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
|