Immutable infrastructure
Il concetto di immutable infrastructure (Chad Fowler, 2013) sostituisce il modello “configure in place” (Puppet/Chef/Ansible che modificano server esistenti) con un modello golden image: build un’immagine completa, deploy identica ovunque, sostituiscila invece di modificarla. Packer è il tool che rende la build multi-platform standardizzata.
Il rilascio
Packer è pubblicato nel giugno 2013 da Mitchell Hashimoto (cofounder HashiCorp, anche autore Vagrant). La versione 1.0 stabilizzata arriva il 4 aprile 2017. Scritto in Go, single binary. Licenza originariamente MPL 2.0; nel 2023 HashiCorp cambia a BUSL 1.1 (non-compete per competitor commerciali).
Come funziona
Un file JSON/HCL descrive:
- Builders — target platform (AWS EC2, Azure, GCP, VMware, VirtualBox, Docker, QEMU, OpenStack…)
- Provisioners — script installazione (shell, Ansible, Puppet, Chef, file upload)
- Post-processors — trasformazioni finali (Vagrant box, Docker push, compress)
source "amazon-ebs" "ubuntu" {
ami_name = "my-app-{{timestamp}}"
instance_type = "t3.micro"
region = "eu-south-1"
source_ami = "ami-ubuntu-22.04"
ssh_username = "ubuntu"
}
build {
sources = ["source.amazon-ebs.ubuntu"]
provisioner "ansible" {
playbook_file = "./site.yml"
}
}
packer build template.pkr.hcl → AMI pronta per deploy.
Vantaggi
- Parallelismo — stessa immagine per AWS/Azure/GCP contemporaneamente
- Versionamento — AMI versionate, rollback semplice
- Supply chain — build in CI con provenance
- Testing — immagini testate prima del deploy
- Immutable deploy — Auto Scaling Group con AMI nuova, no in-place update
Ecosistema
Spesso combinato con:
- Terraform — provisioning infra che usa immagini Packer
- Ansible — come provisioner interno a Packer
- Vagrant — per dev environment locali
- GitLab CI / GitHub Actions — pipeline automatiche
Concorrenti
- EC2 Image Builder (AWS, 2019) — managed, vendor-specific
- Image Builder (Azure), Cloud Build (GCP) — analoghi cloud-specific
- Disk Image Builder (OpenStack)
- Kiwi (SUSE)
- Docker Buildx — per container, non VM
Nel contesto italiano
Packer è usato in:
- Cloud migration aziendali italiane (golden image Linux/Windows)
- MSP con clienti multi-cloud
- Banche/Assicurazioni per immagini standard con hardening CIS
- PA digitale — immagini base per progetti PSN (Polo Strategico Nazionale)
- Dev environment riproducibili con Vagrant su VMware/VirtualBox
Riferimenti: Packer 1.0 (4 aprile 2017). HashiCorp, Mitchell Hashimoto. Originale 2013. Licenza MPL 2.0, BUSL 1.1 dal 2023. Scritto in Go. Builders multi-cloud, provisioners Ansible/Puppet/shell.
