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: https://gitlab.petermatra.design/gitlab-instance-5e679b60/How-to-create-ubuntu-cloudinit-image

Ubuntu images are available here:  https://cloud-images.ubuntu.com

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

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=10.98.1.96/24,gw=10.98.1.1 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 Readme.md in Gitlab. https://gitlab.petermatra.design/gitlab-instance-5e679b60/ansible-k8-proxmox-servers 

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- https://gitlab.petermatra.design/gitlab-instance-5e679b60/Proxmox-Terraform-plan-testVM 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 https://gitlab.petermatra.design/gitlab-instance-5e679b60/Terraform-k8-proxmox

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 http://gitea.petermatra.design 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- https://github.com/trailofbits/algo  which is very simple wireguard VPN to set up but this time I might try https://tailscale.com/ which was suggested by a friend. It is free. I haven't decided. Whichever works best.

Page 3 of 4