Launcher Prodotti Bitnami Documentazioneimaxe CLI Blog Contatti

Golden AMI con Packer: come costruire una pipeline riproducibile passo dopo passo

Una golden AMI costruita bene è la differenza tra rilasciare in pochi secondi con fiducia e azzuffarsi con server che non sono mai uguali. In questa guida tecnica montiamo una pipeline riproducibile con Packer, pronta per la produzione.

Armadi rack in una sala server
Armadi rack in una sala server Foto: Indrajit Das · CC BY-SA 3.0 · Wikimedia Commons

Una golden AMI (o «immagine dorata») è una Amazon Machine Image preconfigurata, irrobustita e validata che funge da unico modello per lanciare istanze EC2 identiche. Invece di avviare ogni volta un server vuoto e installare le dipendenze a mano, cuoci («baking») tutto una volta sola —sistema operativo aggiornato, agenti, runtime, configurazione e controlli di sicurezza— e lo riusi a ogni rilascio.

Questo approccio è la base dell’infrastruttura immutabile: non applichi patch a caldo ai server, ma costruisci un’immagine nuova e sostituisci le istanze. Il risultato è meno deriva di configurazione, avvii più rapidi in autoscaling e rilasci verificabili e reversibili.

Golden AMI contro bootstrapping all’avvio

Esistono due filosofie. Nel bootstrapping l’istanza si configura all’avvio (user-data, Ansible pull, cloud-init). È flessibile ma lento e fragile: se cade un repository di pacchetti, il tuo autoscaling fallisce. Nel modello golden AMI (baking) il lavoro pesante avviene una sola volta nella pipeline; l’avvio è quasi istantaneo e deterministico. La maggior parte dei team maturi combina i due: cuoce ciò che è stabile e lascia all’avvio solo la configurazione che cambia per ambiente.

Perché Packer

Packer, di HashiCorp, è lo strumento standard di fatto per costruire immagini di macchina in modo automatizzato e multicloud da un unico template. Definisci l’immagine come codice (HCL2); Packer lancia un’istanza temporanea, applica i tuoi provisioner, crea la AMI e distrugge le risorse temporanee. Lo stesso template può generare immagini per AWS, Azure e GCP, il che lo rende ideale se pubblichi su più cloud.

  • Riproducibile: l’immagine è descritta in un file versionato in Git.
  • Multicloud: un solo flusso per AMI, Azure Managed Image e GCP Custom Image.
  • Integrabile: si inserisce in CI/CD (GitHub Actions, GitLab CI, CodePipeline).
  • Verificabile: ogni build resta registrato, con il suo manifest e gli artefatti.

Anatomia di un template Packer (HCL2)

Un template moderno è organizzato in blocchi. Il blocco source definisce il builder (per esempio amazon-ebs), la AMI base, il tipo di istanza e la regione. Il blocco build concatena i provisioner che installano e configurano il software. I post-processor generano artefatti come un manifest JSON con l’ID della AMI risultante.

Esempio minimo commentato

source "amazon-ebs" "app" — parte da una AMI base ufficiale cercata dinamicamente con un data "amazon-ami" che filtra per proprietario e schema di nome, per non fissare un ID destinato a scadere.

provisioner "shell" — esegue script di installazione e aggiornamento (dnf update -y, installazione del runtime, dell’agente CloudWatch, dell’agente SSM).

provisioner "ansible" — se hai già ruoli Ansible, riusali per configurare l’immagine in modo idempotente.

post-processor "manifest" — scrive manifest.json con l’artifact_id, che la tua pipeline legge per sapere quale AMI è nata.

La pipeline passo dopo passo

Questo è il flusso che consigliamo per portare una golden AMI dal commit alla produzione in modo sicuro e ripetibile:

PassoCosa succedeStrumento tipico
1. CommitModifichi il template o gli script e fai push su GitGit / revisione PR
2. Validatepacker fmt + packer validate verificano la sintassiPacker, CI
3. BuildPacker lancia un’istanza temporanea e applica i provisionerPacker
4. HardenSi applica il benchmark CIS e si ripuliscono le credenzialiAnsible / CIS
5. ScanScansione di vulnerabilità e segretiTrivy, Inspector
6. TestSi avvia un’istanza e si validaInSpec / Goss
7. Tag & versionSi etichetta la AMI (versione, commit, data)AWS CLI
8. DistributeSi condivide o si copia in altre regioni o accountAWS RAM / copy
9. DeployLa AMI viene referenziata nel Launch TemplateTerraform / ASG

Flusso di riferimento di una pipeline di golden AMI in nove tappe.

Buone pratiche che fanno la differenza

  • Non fissare mai una AMI base per ID: cercala dinamicamente per proprietario e nome per ereditare sempre le patch più recenti.
  • Versiona l’immagine con uno schema chiaro (per esempio app-2026.07.1) e salva il commit Git nei tag della AMI.
  • Pulisci prima di sigillare: cancella log, cronologie di shell, chiavi SSH temporanee e cache dei pacchetti per non far trapelare segreti.
  • Scansiona sempre: integra Trivy o Amazon Inspector per non pubblicare CVE note.
  • Cifra gli snapshot con una chiave KMS propria dal primo minuto.
  • Automatizza la scadenza: marca come deprecate le versioni vecchie ed eliminale per tenere sotto controllo i costi.

Packer o EC2 Image Builder: quale scelgo?

Se lavori solo su AWS e apprezzi l’integrazione nativa con Inspector, i componenti CIS gestiti e nessuna infrastruttura da mantenere, EC2 Image Builder è un’opzione solida e senza costo di licenza. Se devi costruire per più cloud dallo stesso template, o hai già l’ecosistema HashiCorp (Terraform, Vault), Packer ti darà più portabilità. Non si escludono: molti team usano Packer per la logica multicloud e Image Builder per le pipeline interne di AWS.

Domande frequenti

Ogni quanto devo ricostruire la golden AMI?

Come minimo a ogni ciclo di patch del sistema operativo (mensile è di solito un buon ritmo) e ogni volta che esce un CVE critico nel tuo stack. Una pipeline automatizzata consente di ricostruire su richiesta in pochi minuti.

Posso usare lo stesso template Packer per AWS e Azure?

Sì. Packer supporta più builder in uno stesso build. Condividi i provisioner e cambi solo il blocco source di ciascun cloud, producendo in parallelo una AMI, una Managed Image e una Custom Image.

Golden AMI o container?

Non è l’uno o l’altro. Le golden AMI sono ideali per il livello host e per carichi non containerizzati; i container vivono sopra. Anzi, una golden AMI irrobustita è un’ottima base per i tuoi nodi Kubernetes.

In imaxe.cloud costruiamo e manteniamo immagini base irrobustite e aggiornate, così la tua pipeline parte da una base affidabile.

packergolden amiawsci/cdinfrastruttura immutabile
IM

Team imaxe

Costruiamo e manteniamo le AMI del catalogo. Quando pubblichiamo una versione, la usiamo in produzione prima di tutti.

Dal catalogo

AMI collegate a questo articolo

Continua a leggere

Articoli correlati