Skip to content

Instantly share code, notes, and snippets.

@aleksul
Created December 13, 2021 13:48
Show Gist options
  • Save aleksul/b2e8206319fcb37d63f6fef053ca1aab to your computer and use it in GitHub Desktop.
Save aleksul/b2e8206319fcb37d63f6fef053ca1aab to your computer and use it in GitHub Desktop.

Revisions

  1. aleksul created this gist Dec 13, 2021.
    40 changes: 40 additions & 0 deletions script.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    # 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