Peter Matra Design

AWS Solutions Architect and IT Consultant

Cloud init images are great for ProxMox Templates and for launching machines via Terraform. 

This code is also available here:

Ubuntu images are available here:


You need to install libguestfstools to customize the image.

sudo apt update -y && sudo apt install libguestfs-tools -y

 Once the tools are installed you can start customizing your image:

sudo virt-customize -a focal-server-cloudimg-amd64.img --install qemu-guest-agent
sudo virt-customize -a focal-server-cloudimg-amd64.img --run-command 'useradd pmatra'
sudo virt-customize -a focal-server-cloudimg-amd64.img --run-command 'mkdir -p /home/pmatra/.ssh'
sudo virt-customize -a focal-server-cloudimg-amd64.img --ssh-inject pmatra:file:/home/pmatra/.ssh/authorized_keys
sudo virt-customize -a focal-server-cloudimg-amd64.img --run-command 'chown -R pmatra:pmatra /home/pmatra'
sudo virt-customize -a focal-server-cloudimg-amd64.img --root-password password:PASSWORD
sudo virt-customize -a focal-server-cloudimg-amd64.img --run-command 'echo /etc/sudoers >> pmatra ALL=(ALL) NOPASSWD:ALL'

After all of that is done if you want to load it into Proxmox as a template, you need to upload it to your Proxmox Server and run this code.

qm create 9000 --name "ubuntu20-cloudinit-template" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
qm importdisk 9000 focal-server-cloudimg-amd64.img local-lvm
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0
qm set 9000 --boot c --bootdisk scsi0
qm set 9000 --ide2 local-lvm:cloudinit
qm set 9000 --serial0 socket --vga serial0
qm set 9000 --agent enabled=1
qm template 9000

If you want to clone the image manually you can do it this way via ProxMox Shell or SSH

sudo qm clone 9000 999 --name test-clone-cloud-init sudo qm set 999 --ipconfig0 ip=,gw= sudo qm start 999

I did an Ansible Kubernetes deployment to 4 ProxMox hosts successfully after using my Terraform K8 plan. I use WSL Ubuntu on Windows to do the deployment. I actually used WSL through MobaXTerm which makes things a lot easier with a built in SFTP. Ansible also install the Kubernetes Dashboard for you. The instructions are in the in Gitlab. 

I added Terraform to my Proxmox setup using Telmate. I can now launch multiple VMs in a few minutes. I took cloud images and injected SSH keys, root passwords, Qemu Guest Agent software. The Terraform plans are here- I created the cloud init images from some help off the web but I had to customize it. I will put the code up in the blog to show how to make it.

Also added this script to launch Kubernetes servers, nodes, and storage

I added an AWS Storage Gateway to my on-premises datacenter to add unlimited storage to my on prem datacenter components. S3 buckets are now available to my network devices.

I've updated my on-prem datacenter with 5 static IPs, launched a Nextcloud Server, a Gitea server and added Metrics to my ProxMox VE setup using Influx and Grafana. My Git is now being populated but available at I'm also looking into EKS Anywhere to control on-prem K8 clusters using AWS EKS. Right now it's only available for vSphere.

Screenshot 2022 05 14 112757

Right now I don't have a VLAN on ProxMox which I currently plan to set up when my L3 switch arrives in the mail. Then I can isolate my VMs and VPN. Some VMs need to site on the WAN, some go to static IPs from comcast, some need to go to a VLAN. Normally I use AlgoVPN-  which is very simple wireguard VPN to set up but this time I might try which was suggested by a friend. It is free. I haven't decided. Whichever works best.

Page 3 of 4