Skip to content

Instantly share code, notes, and snippets.

@nurdiansyah
Forked from aleksul/script.sh
Last active October 25, 2024 08:21
Show Gist options
  • Save nurdiansyah/d7377bedea3907c9e44ea132d364ffc1 to your computer and use it in GitHub Desktop.
Save nurdiansyah/d7377bedea3907c9e44ea132d364ffc1 to your computer and use it in GitHub Desktop.
Proxmox create Ubuntu 20.04 template
# download ubuntu-cloud image
# NOTE: ubuntu-server won't properly work with cloud-init for some reason
wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
# NOTE: no need for sudo because we already login as root
# install image customization tool
apt update -y && apt install libguestfs-tools -y
# install qemu-guest-agent inside of image
virt-customize -a focal-server-cloudimg-amd64.img --install qemu-guest-agent
# (optionally) edit cloud.cfg
# I usually add "package_update: true" and "packages: \n - nano \n - curl \n - wget"
# more examples: https://cloudinit.readthedocs.io/en/latest/topics/examples.html
export EDITOR=nano
virt-edit -a focal-server-cloudimg-amd64.img /etc/cloud/cloud.cfg
# NOTE: proxmox docs for further steps: https://pve.proxmox.com/wiki/Cloud-Init_Support
# create VM (number=100) with 2 cores, 2GB of RAM, and default networking
qm create 100 --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
# import image as a disk
# NOTE: you might want to change "local-lvm" to "local-zfs"
qm importdisk 100 focal-server-cloudimg-amd64.img local-lvm
qm set 100 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-100-disk-0
# set up cloud-init
qm set 100 --ide2 local-lvm:cloudinit
qm set 100 --serial0 socket --vga serial0
# set boot order
qm set 100 --boot c --bootdisk scsi0
# enable qemu-guest-agent
qm set 100 –-agent 1
# convert VM into a template
qm template 100
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment