2.2 KiB
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 |
---|---|---|---|
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.Migrate VM.Monitor VM.PowerMgmt"
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
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).