DEV Community

Discussion on: Creating proxmox templates with packer

aaronktberry profile image
Aaron Berry Author

Yep that’s right cloud unit is the way to do with the newer distributions. I’ve been meaning to spend some time to do another write up for what that looks like with cloud unit but unfortunately I had to tear down my proxmox lab during a recent move 😬

mike1237 profile image

I wrote a script to create a base template on Proxmox that supports cloud-init.
Then you can use proxmox-clone packer builder off of that.

lethargosapatheia profile image
lethargosapatheia • Edited on

I was able to solve it, actually, up to the point where you have a readily available template with cloud-init ready to read the user-data. Just to give you a head start :)

       "boot_command": [
        "<esc><enter><f6><esc><wait> ",
        "ip={{ user `vm_ip` }}::{{ user `vm_gateway` }}:{{ user `vm_netmask` }}::::{{ user `vm_dns` }} ",
        "autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ",
        "--- <enter>"
Enter fullscreen mode Exit fullscreen mode

This configures autoinstall, which can run cloud-init commands. And will run cloud-init anyway.
These are the variables:

  "variables": {
    "vm_ip": "",
    "vm_netmask": "",
    "vm_gateway": "",
    "vm_dns": "",
    "search_domain:": "domain.internal",
    "dns_server:": "",
    "template_name": "ubuntu-20-04.domain.internal",
    "template_description": "Ubuntu 20.04, generated by packer on {{ isotime }}",
    "playbook": "setup/work.yml",
Enter fullscreen mode Exit fullscreen mode

Then you can reset cloud-init through ansible (run by packer), for example.

If you want to write an updated article, I'll be happy to help, if you think you need any, of course!