Use Packer to create VM templates for VMWare ESXi. Images can be used with terraform to bootstrap a k3s cluster
This repo builds 3 images, initially set up using cloud-init
and then further customized using scripts during packer provisioning:
ubuntu_2004-docker
: ubuntu 20.04 LTS with docker installed and some other standard packages (see cloud-init for details)ubuntu_2004-k8s-nodhcp
: ubuntu_2004-docker image with iscsi packages set up and all netplan configurations removedubuntu_2004-k8s-cloudinit-ready
: ubuntu_2004-k8s-nodhcp with cloud-init cleaned and ready for re-initialization
-
Update templates
-
Update json files with data from
.envrc
(assuming.envrc
is complete)# reload all env variables direnv allow . # perform substitutions envsubst < ./templates/variables.json >! ./variables.json envsubst < ./templates/user-data >! ./ubuntu_2004/http/user-data envsubst < ./templates/meta-data >! ./ubuntu_2004/http/meta-data
-
Build all images (including push to ESXi vSphere):
for IMAGE in $(find . -name "ubuntu*.json"); do # packer build -force -var-file=variables.json ${IMAGE} packer build -var-file=variables.json ${IMAGE} done
This creates 4 different machine images:
ubuntu-2004
-- standard image, has simple IPv4 DHCP enabledubuntu-2004-nodhcp
-- standard image with/etc/netplan
cleared. Must provide netplan config to get internetubuntu-2004-cloudinit
-- standard image with cloudinit-guestinfo configured for vSphereubuntu-2004-cloudinit-guestinfo
-- image with cloudinit-guestinfo configured for vSphere and/etc/netplan
cleared - must provide netplan config.