packer/readme.md

2.1 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.

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

More info: https://developer.hashicorp.com/packer/docs/intro

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 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

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).