🟡 Intermediate

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

  1. Template — definujete zdroj (source), buildery a provisionery v HCL alebo JSON
  2. Builder — vytvorí dočasnú VM na cieľovej platforme
  3. Provisioner — nainštaluje a nakonfiguruje softvér (shell, Ansible, Chef)
  4. Post-processor — spracuje výsledný obraz (komprimácia, upload, tagging)
  5. 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.