Skip to main content

Ubuntu 22.04 Template with Cloud-Init

Creating a cloud-init template is relatively simple and straightforward to do. Essentially, you'll want to create your VM with base configurations, and then convert it to a template within Proxmox VE. Follow the steps below to create your own template with cloud-init.

Create your VM in Proxmox

image.png

  • Assign a VM ID, I keep my templates in the 900s range, and then give your VM a name
OS Settings

image.png

  • Select "Do not use any media"
    • We'll be adding cloud-init drive later on

System Settings

image.png

  • Select qemu agent
  • Keep everything else as default or change if you'd like
Disk Settings

image.png

  • Delete the disk, we'll add this later on
CPU Settings

image.png

You can keep this at default settings, or change depending on what your intentions are for this template. I plan to use this specific template for Kubernetes nodes, so I'll be using minimal requirement specs

Memory Settings

image.png

  • I kept this default at 2 GB for memory. You can always scale up your clones: keep in mind that this is just a base configuration
Network Settings

image.png

  • I kept my network settings the same, as I manage my homelab network with Static Leases and VLANS through OPNsense
  • After this step, confirm and create your VM
Hardware Settings

image.png

  • Select your VM and navigate to the Hardware tab
  • Select Add ---> CloudInit Drive
    • image.png

      • I selected local-zfs for my storage
Cloud-Init Settings

image.png

  • Navigate to Cloud-Init
  • Configure settings however you'd like your VMs to be created
  • I set username, password, upgrade packages, and IP to DHCP

Establish a terminal connection to your Proxmox VE so you can configure Cloud-Init further

image.png

You'll now want to download the cloud image you'd like to use for the VM with wget. You can find Cloud Images at the Ubuntu Cloud website and select any version of flavor of linux you'd like. I'll be using the Ubuntu Minimal 22.04 LTS (Jammy) image:

image.png

Select the release you'd like to use, or scroll all the way down and select release/ for the most current. In this folder, find the amd64.image and copy the download link.

image.png

In your terminal window for Proxmox, run the command below:

wget https://cloud-images.ubuntu.com/minimal/releases/jammy/release/ubuntu-22.04-minimal-cloudimg-amd64.img

After downloading, run the ls command to view the file name:

image.png

Since I've already created templates before, I have some files already in there. The file I just downloaded is ubuntu-22.04-minimal-cloudimg-amg64.img

Before moving forward, run the following command:

qm set 901 --serial0 socker --vga serial0
  • This is required so that your Proxmox VM console will show your VM output
  • 901 should be changed to whatever your VM ID is

Next you'll want to rename the file and change the file extension to .qcow2

Run the following command:

mv ubuntu-22.04-minimal-cloudimg-amg64.img ubuntu-min-2204server.qcow2

Set the disk size with the following command:

qemu-img resize ubuntu-min-2204server.qcow2 32G
  • This will set the base hard drive size to 32Gb. You can always change this later

Next, you'll want to run the following command to import ther drive to your VM in Proxmox:

qm importdisk 901 ubuntu-min-2204server.qcow2 local-zfs
  • Set 901 to your VM ID
  • Set local-zfs to your storage 
    • If you're not using zfs, yours is most likely local-lvm

Next, navigate in your Proxmox GUI to the Hardware section of your VM, and you'll find "unused disk 0" at the bottom. Select edit, and check the following boxes if you're using SSDs in your host machine:

image.png

image.png

The last step before starting the VM is to edit the Boot Order. You can do this by navigating to the Options tab within your VM. 

image.png

  • Edit it so that scsi0 is enabled and moved up to 2nd

With all your configurations set, right-click on the machine and select "Convert to Template". To test everything's worked correctly, right click on the template and select "Clone" then select "Full Clone" for the mode:

image.png

Start your machine and test that it's working as configured!