feat: add Vagrant file and provisioning scripts
This commit is contained in:
commit
ad2a00a42c
25 changed files with 4805 additions and 0 deletions
75
Vagrantfile
vendored
Normal file
75
Vagrantfile
vendored
Normal file
|
@ -0,0 +1,75 @@
|
|||
# -*- 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
|
Loading…
Add table
Add a link
Reference in a new issue