Packer 1.0: build di immagini macchina riproducibili

Packer 1.0 (aprile 2017, HashiCorp, originale 2013) di Mitchell Hashimoto: tool per creare immagini macchina identiche per multi-platform (AWS AMI, VMware, Docker, Azure). Foundation dell'immutable infrastructure.

Open Source PackerHashiCorpMitchell HashimotoImmutable InfrastructureIaCOpen Source

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.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi