Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ptu/63647a34e92a8ddc5d867bf0f4de3c34 to your computer and use it in GitHub Desktop.
Save ptu/63647a34e92a8ddc5d867bf0f4de3c34 to your computer and use it in GitHub Desktop.
Ubuntu and Debian Cloud images in Proxmox

Cloud images in Proxmox

A script which automates these steps for multiple distros incl. CoreOS, CentOS, Arch and ALpine

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-zfs -format qcow2

# Attach the disk to the vm using VirtIO SCSI
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-zfs:vm-9000-disk-0

# 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment