Skip to content

Instantly share code, notes, and snippets.

@chriswayg
Last active June 6, 2025 15:29
Show Gist options
  • Save chriswayg/b6421dcc69cb3b7e41f2998f1150e1df to your computer and use it in GitHub Desktop.
Save chriswayg/b6421dcc69cb3b7e41f2998f1150e1df to your computer and use it in GitHub Desktop.
Ubuntu and Debian Cloud images in Proxmox

Ubuntu Cloud image in Proxmox

Steps for creating an Ubuntu 18.04 cloud template

wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img

# Create a VM
qm create 9000 --name ubuntu1804-templ --memory 2048 --net0 virtio,bridge=vmbr1

# Import the disk in qcow2 format (as unused disk) 
qm importdisk 9000 bionic-server-cloudimg-amd64.img local -format qcow2

# Attach the disk to the vm using VirtIO SCSI
qm set 9000 --scsihw virtio-scsi-pci --scsi0 /var/lib/vz/images/9000/vm-9000-disk-0.qcow2

# Important settings
qm set 9000 --ide2 local:cloudinit --boot c --bootdisk scsi0 --serial0 socket --vga serial0

# The initial disk is only 2GB, thus we make it larger
qm resize 9000 scsi0 +30G

# Using a  dhcp server on vmbr1 or use static IP
qm set 9000 --ipconfig0 ip=dhcp
#qm set 9000 --ipconfig0 ip=10.10.10.222/24,gw=10.10.10.1

# user authentication for 'ubuntu' user (optional password)
qm set 9000 --sshkey ~/.ssh/id_rsa.pub
#qm set 9000 --cipassword AweSomePassword

# check the cloud-init config
qm cloudinit dump 9000 user

# create tempalte and a linked clone
qm template 9000
qm clone 9000 190 --name ubuntu1804-1
qm start 190

rm -v bionic-server-cloudimg-amd64.img

Steps for creating a Debian 10 cloud template

wget https://cdimage.debian.org/cdimage/openstack/current/debian-10.0.2-20190721-openstack-amd64.qcow2

# Create a VM
qm create 9110 --name debian10-cloud --memory 2048 --net0 virtio,bridge=vmbr1

# Import the disk in qcow2 format (as unused disk) 
qm importdisk 9110 debian-10.0.2-20190721-openstack-amd64.qcow2 local -format qcow2

# Attach the disk to the vm using VirtIO SCSI
qm set 9110 --scsihw virtio-scsi-pci --scsi0 /var/lib/vz/images/9110/vm-9110-disk-0.qcow2

# Important settings
qm set 9110 --ide2 local:cloudinit --boot c --bootdisk scsi0 --serial0 socket --vga serial0

# The initial disk is only 2GB, thus we make it larger
qm resize 9110 scsi0 +30G

# Using a  dhcp server on vmbr1 or use static IP
qm set 9110 --ipconfig0 ip=dhcp
#qm set 9110 --ipconfig0 ip=10.10.10.222/24,gw=10.10.10.1

# user authentication for 'debian' user (optional password)
qm set 9110 --sshkey ~/.ssh/id_rsa.pub
#qm set 9110 --cipassword AweSomePassword

# check the cloud-init config
qm cloudinit dump 9110 user

# create tempalte and a linked clone
qm template 9110
qm clone 9110 191 --name debian10-1
qm start 191

rm -v debian-10.0.2-20190721-openstack-amd64.qcow2

To resize the VM disk later

qm shutdown 190 && qm wait
qm resize 190 scsi0 +8G
qm start 190

To fully disable cloud-init

When booting under systemd, you can disable cloud-init completely by either:

  • creating a file: sudo touch /etc/cloud/cloud-init.disabled
  • or adding cloud-init=disabled to the kernel command line as found in /proc/cmdline

To partially disable cloud-init

To partially disable some functions, modify: /etc/cloud/cloud.cfg, for example to disable network configuration:

sudo su -
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

To show the Grub Menu on the serial console

sudo nano /etc/default/grub config

GRUB_TERMINAL="console serial"

sudo update-grub

Checking cloud-init

Convert Images

https://docs.openstack.org/image-guide/convert-images.html

qemu-img convert -f raw -O qcow2 bionic-server-cloudimg-amd64.img bionic-server-cloudimg-amd64.qcow2
@gdelanoy
Copy link

worked just fine.
Thanks.

FYI, following your gist with recent images also works fine.
Just

wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-disk-kvm.img
or
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2

and adapt the file names where needed, and you're good to go;

@electropolis
Copy link

electropolis commented Feb 5, 2024

How you manage to do this
# Import the disk in qcow2 format (as unused disk) qm importdisk 9000 bionic-server-cloudimg-amd64.img local -format qcow2

When local "storage: storage 'local' does not support vm images" ?

@jgkawell
Copy link

jgkawell commented Mar 7, 2024

@electropolis You should be able to use local-lvm instead of local.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment