vmdb2 is the new version of vmdebootstrap. It can create disk images, for example for Raspberry PIs or VMs. You could also use it as a debian installer, if you like...
However, there was is a shortcomming in vmdb2: it can only create raw images - but what you eventually want for VMs is qcow2. However, when you install this patch (actually, only the changes around line 92 are required), you can do the following to install onto a qcow2 image directly:
qemu-img create -f qcow2 myimage.qcow2 40G
modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 --format=qcow2 --cache=none --detect-zeroes=on --aio=native myimage.qcow2
vmdb2 --image /dev/nbd0 config.vmdb2
qemu-nbd --disconnect /dev/nbd0
Note however, that you must not use the kpartx
module in the vmdb2 script.
For this purpose, it is not necessary because nbd will detect the partitions
automatically.
A minimal vmdb script would for example be:
steps:
- mklabel: msdos
device: "{{ image }}"
- mkpart: primary
device: "{{ image }}"
start: 10M
end: 100%
tag: rootfs
- mkfs: ext4
partition: rootfs
options: -E lazy_itable_init=0,lazy_journal_init=0
- mount: rootfs
- debootstrap: bullseye
mirror: http://deb.debian.org/debian
target: rootfs
- apt: install
packages:
- linux-image-amd64
tag: rootfs
- grub: bios
tag: rootfs
image-dev: "{{ image }}"