### Proxmox Cloud-Init Support

https://pve.proxmox.com/wiki/Cloud-Init_Support

https://cloud-images.ubuntu.com

```bash
# download the image
wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img

# create a new VM
qm create 3000 --memory 1024 --net0 virtio,bridge=vmbr1
qm set 3000 --name ubuntu

# import the downloaded disk to local-lvm storage
qm importdisk 3000 focal-server-cloudimg-amd64.img local-lvm

# finally attach the new disk to the VM as scsi drive
qm set 3000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-3000-disk-0
```

###### Add Cloud-Init CD-ROM drive
The next step is to configure a CD-ROM drive, which will be used to pass the Cloud-Init data to the VM.
```bash
qm set 3000 --ide2 local-lvm:cloudinit
```

To be able to boot directly from the Cloud-Init image, set the bootdisk parameter to scsi0, and restrict BIOS to boot from disk only. This will speed up booting, because VM BIOS skips the testing for a bootable CD-ROM.
```bash
qm set 3000 --boot c --bootdisk scsi0
```

Also configure a serial console and use it as a display. Many Cloud-Init images rely on this, as it is an requirement for OpenStack images.
```bash
qm set 3000 --serial0 socket --vga serial0
```

In a last step, it is helpful to convert the VM into a template. From this template you can then quickly create linked clones. The deployment from VM templates is much faster than creating a full clone (copy).
```bash
qm template 3000
```


###### Deploying Cloud-Init Templates

You can easily deploy such a template by cloning:
```bash
qm clone 3000 171 --name us171
```

Then configure the SSH public key used for authentication, and configure the IP setup:
```bash
qm set 171 --sshkey ~/.ssh/id_rsa.pub
qm set 171 --ipconfig0 ip=192.168.10.171/24,gw=192.168.10.9
```