Packer — Automatizované vytváranie obrazov
Packer od HashiCorp je nástroj na automatizované vytváranie machine images pre rôzne platformy. Jeden konfiguračný súbor vám vytvorí identický obraz pre AWS (AMI), Azure, GCP, Docker, VMware a ďalšie.
Čo je Packer?
Packer automatizuje proces, ktorý by ste inak robili manuálne — spustíte VM, nainštalujete softvér, nakonfigurujete systém a uložíte ako obraz. S Packerom tento proces definujete v kóde a spustíte jedným príkazom.
- Multi-platforma — jeden zdroj, obrazy pre viacero cloudov
- Opakovateľnosť — rovnaký obraz zakaždým
- Integrácia s CI/CD — automatické buildovanie obrazov v pipeline
- Immutable infrastructure — namiesto konfigurácie bežiacich serverov nasadíte nový obraz
Ako Packer funguje
- Template — definujete zdroj (source), buildery a provisionery v HCL alebo JSON
- Builder — vytvorí dočasnú VM na cieľovej platforme
- Provisioner — nainštaluje a nakonfiguruje softvér (shell, Ansible, Chef)
- Post-processor — spracuje výsledný obraz (komprimácia, upload, tagging)
- Artifact — výsledný machine image pripravený na použitie
Príklad konfigurácie
source "amazon-ebs" "ubuntu" {
ami_name = "web-server-{{timestamp}}"
instance_type = "t3.micro"
region = "eu-central-1"
source_ami = "ami-0c55b159cbfafe1f0"
ssh_username = "ubuntu"
}
build {
sources = ["source.amazon-ebs.ubuntu"]
provisioner "shell" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y nginx",
"sudo systemctl enable nginx"
]
}
provisioner "ansible" {
playbook_file = "playbook.yml"
}
post-processor "manifest" {
output = "manifest.json"
}
}
Provisioners
- Shell — bash skripty, najjednoduchšia voľba
- Ansible — komplexná konfigurácia cez playbooks
- Chef/Puppet — existujúce configuration management nástroje
- File — kopírovanie súborov do obrazu
- PowerShell — pre Windows obrazy
Praktické použitie
- Golden images pre auto-scaling skupiny — servery štartujú rýchlo s predpripraveným softvérom
- Multi-cloud stratégia — identické obrazy pre AWS aj GCP
- Security hardening — predkonfigurované bezpečné obrazy
- Integrácia s Terraform — Packer vytvorí AMI, Terraform ho nasadí
Best Practices
- Verzionujte šablóny v Git spolu s aplikačným kódom
- Používajte Ansible provisioner pre komplexné konfigurácie
- Tagujte obrazy s build číslom a Git commitom
- Pravidelne rebuildujte obrazy pre security patches
- Testujte obrazy automatizovane pred nasadením do produkcie
- Čistite staré obrazy — majú náklady na úložisko
Packer je nenahraditeľný nástroj pre immutable infrastructure prístup, kde namiesto opravovania bežiacich serverov jednoducho nasadíte nový, čistý obraz.