From 4b49404a0c4a159f1adba57f346ad8190c6e8fd8 Mon Sep 17 00:00:00 2001 From: Kris Lamoureux Date: Thu, 21 Aug 2025 23:25:27 -0400 Subject: [PATCH] Create Vagrant box from base image --- debian-13/Makefile | 9 ++++- debian-13/scripts/vagrant.sh | 20 ++++++++++ debian-13/x86_64-qemu-vagrant.pkr.hcl | 56 +++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 debian-13/scripts/vagrant.sh create mode 100644 debian-13/x86_64-qemu-vagrant.pkr.hcl diff --git a/debian-13/Makefile b/debian-13/Makefile index 2dbaade..91d253f 100644 --- a/debian-13/Makefile +++ b/debian-13/Makefile @@ -4,8 +4,13 @@ HEADLESS ?= true default: install -install: - PKR_VAR_headless="$(HEADLESS)" packer build . +install: base + +base: + PKR_VAR_headless="$(HEADLESS)" packer build x86_64-qemu-base.pkr.hcl + +vagrant: + PKR_VAR_headless="$(HEADLESS)" packer build x86_64-qemu-vagrant.pkr.hcl clean: rm -rf ./builds diff --git a/debian-13/scripts/vagrant.sh b/debian-13/scripts/vagrant.sh new file mode 100644 index 0000000..0c51431 --- /dev/null +++ b/debian-13/scripts/vagrant.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -eu + +export DEBIAN_FRONTEND=noninteractive +apt-get update +apt-get install -y openssl curl sudo + +useradd -m -p "$(openssl passwd -1 vagrant)" vagrant + +echo "vagrant ALL=(ALL) NOPASSWD:ALL" >/etc/sudoers.d/vagrant +chmod 440 /etc/sudoers.d/vagrant + +install -d -m 0700 -o vagrant -g vagrant /home/vagrant/.ssh +BASE_GH_URL="https://raw.githubusercontent.com/hashicorp/vagrant/refs/heads" +curl -fsSL "${BASE_GH_URL}/main/keys/vagrant.pub" \ + -o /home/vagrant/.ssh/authorized_keys +chmod 600 /home/vagrant/.ssh/authorized_keys + +sed -i 's/PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config +passwd -d root diff --git a/debian-13/x86_64-qemu-vagrant.pkr.hcl b/debian-13/x86_64-qemu-vagrant.pkr.hcl new file mode 100644 index 0000000..950c662 --- /dev/null +++ b/debian-13/x86_64-qemu-vagrant.pkr.hcl @@ -0,0 +1,56 @@ +packer { + required_plugins { + qemu = { + version = ">= 1.1.3" + source = "github.com/hashicorp/qemu" + } + } +} + +variable "memory" { + default = 2048 +} + +variable "ssh_password" { + default = "debian" +} + +variable "headless" { + default = true +} + +variable "disk_size" { + default = 102400 +} + +source "qemu" "debian-13-64-vagrant" { + iso_url = "builds/qemu/debian-13-64-base/debian-13-64-base" + disk_image = true + iso_checksum = "none" + output_directory = "builds/qemu/debian-13-64-vagrant" + shutdown_command = "/usr/bin/systemctl poweroff" + disk_interface = "virtio" + disk_size = var.disk_size + memory = var.memory + headless = var.headless + format = "qcow2" + accelerator = "kvm" + http_directory = "http" + ssh_username = "root" + ssh_password = var.ssh_password + ssh_timeout = "60m" + vm_name = "debian-13-64-base" + net_device = "virtio-net" + boot_wait = "5s" +} + +build { + name = "debian-base" + sources = ["source.qemu.debian-13-64-vagrant"] + + provisioner "shell" { + scripts = [ + "scripts/vagrant.sh" + ] + } +}