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
- Assign a VM ID, I keep my templates in the 900s range, and then give your VM a name
OS Settings
- Select "Do not use any media"
- We'll be adding cloud-init drive later on
System Settings
- Select qemu agent
- Keep everything else as default or change if you'd like
Disk Settings
- Delete the disk, we'll add this later on
CPU Settings
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
- 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
- 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
- Select your VM and navigate to the Hardware tab
- Select Add ---> CloudInit Drive
Cloud-Init Settings
Establish a terminal connection to your Proxmox VE so you can configure Cloud-Init further
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:
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.
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:
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
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.
- 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:
Start your machine and test that it's working as configured!