Create templates
Go to file
2024-08-13 11:22:33 +02:00
debian12 [packer] feat: various update 2024-07-16 16:53:22 +02:00
scripts [debian12] feat: added sudo and made debconf noninteractive 2024-08-13 11:22:33 +02:00
ubuntu24 [packer] feat: various update 2024-07-16 16:53:22 +02:00
.gitignore [global] feat: initial commit 2024-07-15 12:58:32 +00:00
readme.md [debian12] feat: initial addition of debian12 2024-07-15 17:11:51 +02:00
variables.pkrvars.hcl.example [packer] feat: added variables 2024-07-15 15:31:02 +02:00

What does this stuff do?

Packer is a tool that can create Virtual Machine templates from code.
This repository hosts the code for a customized templates used in Siempie's home environment using the Proxmox Hypervisor.

More info: https://developer.hashicorp.com/packer/docs/intro https://developer.hashicorp.com/packer/integrations/hashicorp/proxmox/latest/components/builder/iso

Inside the Template

Inside the template packer does:

  • Install updates
  • Install tools; curl, qemu-guest agent, sudo and wget.
  • Install Ansible user with private key
  • Clean guest (machine-id, logs, package cache, etc)

Other information to know:

  • Template hostname: localhost
  • packer username: packer
  • packer password: packer
OS VM Name VM ID Script
Debian 12 debian.template.siempie.internal 998 scripts/debian12.sh
Ubuntu 24 ubuntu.template.siempie.internal 999 scripts/ubuntu24.sh

Create packer user and role on Proxmox

pveum role add packer -privs "Datastore.AllocateSpace Datastore.Audit Pool.Allocate Sys.Audit Sys.Console Sys.Modify VM.Allocate VM.Audit VM.Clone VM.Config.CDROM VM.Config.Cloudinit VM.Config.CPU VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Console VM.Migrate VM.Monitor VM.PowerMgmt SDN.Use"
pveum user add packer@pve --password <super-secure>
pveum aclmod / -user packer@pve -role packer

Install packer

Install packer on your system (or dedicated pxc container):
https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli

Variables

Copy the variables.pkrvars.hcl.example file to variables.pkrvars.hcl and change the variables.

Initialize the project and install the proxmox provider

This will initialize packer and install the required proxmox plugin.

packer init -var-file variables.pkrvars.hcl ubuntu24/packer.pkr.hcl

Customization

Since packer allows either an inline or a script execution there is a script per template. See the table above for the specific location per template.

Usage

Debian 12 Template:

packer build -force -var-file variables.pkrvars.hcl debian12/packer.pkr.hcl

Ubuntu 24 Template:

packer build -force -var-file variables.pkrvars.hcl ubuntu24/packer.pkr.hcl

Note: the -force flag removes an already existing VM or Template with the same ID (999).