Skip to content

Instantly share code, notes, and snippets.

@reluce
Last active April 24, 2024 20:04
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 16 You must be signed in to fork a gist
  • Save reluce/797515dc8b906eb07f54393a119df9a7 to your computer and use it in GitHub Desktop.
Save reluce/797515dc8b906eb07f54393a119df9a7 to your computer and use it in GitHub Desktop.
Prepare Ubuntu 22.04 Cloud Image and Template for Proxmox
# All commands will be executed on a Proxmox host
sudo apt update -y && sudo apt install libguestfs-tools -y
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
# Install qemu-guest-agent on the image. Additional packages can be specified by separating with a comma.
sudo virt-customize -a jammy-server-cloudimg-amd64.img --install qemu-guest-agent
# Read and set root user password from file.
sudo virt-customize -a jammy-server-cloudimg-amd64.img --root-password file:password_root.txt
# Create an additional user.
sudo virt-customize -a jammy-server-cloudimg-amd64.img --run-command "useradd -m -s /bin/bash myuser"
# Set password for that user.
sudo virt-customize -a jammy-server-cloudimg-amd64.img --password myuser:file:password_myuser.txt
# Delete temporary password files safely.
shred -uv password_root.txt password_myuser.txt
# Optional: Install fish shell.
sudo virt-customize -a jammy-server-cloudimg-amd64.img --run-command "apt-add-repository ppa:fish-shell/release-3 --yes"
sudo virt-customize -a jammy-server-cloudimg-amd64.img --install fish
sudo virt-customize -a jammy-server-cloudimg-amd64.img --run-command "chsh -s /usr/bin/fish myuser"
# Finally, update all packages in the image.
sudo virt-customize -a jammy-server-cloudimg-amd64.img --update
# Next, we create a Proxmox VM template.
# Change values for your bridge and storage and change defaults to your liking.
sudo qm create 777 --name "ubuntu-20.04-template" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
sudo qm importdisk 777 jammy-server-cloudimg-amd64.img zfs
sudo qm set 777 --scsihw virtio-scsi-pci --scsi0 zfs:vm-777-disk-0
sudo qm set 777 --boot c --bootdisk scsi0
sudo qm set 777 --ide2 zfs:cloudinit
sudo qm set 777 --serial0 socket --vga serial0
sudo qm set 777 --agent enabled=1
sudo qm template 777
# Now we can create new VMs by cloning this template or reference it with Terraform Proxmox etc.
# Login with SSH only possible with user "ubuntu" and SSH keys specified in cloudinit image.
@jonathanhle
Copy link

This is awesome. Thanks!

@Papaya-git
Copy link

Thanks, I'll copy it ! (I'll give credit to you, ofc)

@slazarov
Copy link

Maybe append sudo virt-customize -a jammy-server-cloudimg-amd64.img --install qemu-guest-agent with --run-command 'systemctl enable qemu-guest-agent.service'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment