hostprofi.ru
Подобрать хостинг
Термин·буква P

Packer

краткое определение

Инструмент HashiCorp для создания идентичных машинных образов (AMI, QCOW2, Docker) из единого шаблона.

Packer (HashiCorp Packer) — инструмент для создания идентичных машинных образов из единого конфигурационного файла. Автоматически создаёт AMI (AWS), VMDK (VMware), QCOW2 (KVM), Docker-образы и другие форматы из одного шаблона.

Как работает

Packer запускает базовый образ (Ubuntu, CentOS) в виртуальной среде, выполняет provisioners (Shell-скрипты, Ansible playbooks, Chef recipes) для установки и настройки ПО, затем сохраняет результат как образ. Образ — «золотой» снимок сервера с предустановленным ПО. При масштабировании из образа запускаются десятки идентичных инстансов за секунды.

Шаблон Packer

# ubuntu-nginx.pkr.hcl (HCL2 формат)
packer {
  required_plugins {
    amazon = { source = "github.com/hashicorp/amazon" }
  }
}

source "amazon-ebs" "ubuntu" {
  ami_name      = "ubuntu-nginx-{{timestamp}}"
  instance_type = "t3.micro"
  region        = "eu-central-1"
  source_ami_filter {
    filters = { name = "ubuntu/images/hvm-ssd/ubuntu-22.04*" }
    owners  = ["099720109477"]
  }
  ssh_username = "ubuntu"
}

build {
  sources = ["source.amazon-ebs.ubuntu"]
  provisioner "shell" {
    inline = ["sudo apt-get update", "sudo apt-get install -y nginx"]
  }
  provisioner "ansible" {
    playbook_file = "./nginx-hardening.yml"
  }
}

История

Packer создан Митчелом Хашимото (Mitchell Hashimoto) в HashiCorp в 2013 году. Один из первых инструментов «Immutable Infrastructure» парадигмы: вместо изменения работающего сервера создаётся новый образ и заменяются инстансы. HashiCorp построила экосистему Infrastructure as Code: Vagrant (2010), Packer (2013), Terraform (2014), Vault (2015), Consul. В 2023 году HashiCorp сменила лицензию на BSL (Business Source License), что вызвало форк OpenTofu от Terraform.

Immutable Infrastructure

Традиционный подход: сервер живёт месяцами, конфигурация меняется «вживую». Проблема: конфигурационный drift, «снежинки» (уникальные серверы, которые нельзя воспроизвести). Immutable approach: никаких изменений на работающем сервере — только замена образа. Packer создаёт образ, Terraform заменяет инстансы. CI/CD автоматизирует весь цикл при изменении конфигурации.

На что обращать внимание

Packer создаёт образы, а не управляет запущенными серверами — для развёртывания нужен Terraform, CloudFormation или другой IaC-инструмент. Сборка образа занимает 10-30 минут — не подходит для hotfix. В этих случаях изменение конфигурации через Ansible быстрее. Для Docker-контейнеров Packer менее актуален — Dockerfile покрывает те же задачи проще.

Packer в CI/CD и облачных средах

Packer органично встраивается в CI/CD: после успешного прохождения тестов пайплайн запускает сборку нового образа. Полученный артефакт — готовый AMI, QCOW2 или Vagrant box — используется при следующем масштабировании или деплое. Это реализует концепцию immutable infrastructure: серверы не обновляются на месте, а заменяются новыми экземплярами из свежего образа.

Провизионеры Packer позволяют использовать привычные инструменты: shell-скрипты, Ansible, Chef. Пример секции конфига:

{
  "provisioners": [{
    "type": "ansible",
    "playbook_file": "setup.yml"
  }]
}

Сначала Packer поднимает временный сервер (например, из базового образа Ubuntu), Ansible устанавливает и настраивает всё необходимое, затем Packer снимает снэпшот и удаляет временный сервер. Итог — золотой образ с заранее установленным стеком.

В Яндекс.Облаке и других российских облачных платформах Packer поддерживается через плагины community. Команда packer build yandex.pkr.hcl создаёт образ диска, который затем используется при создании новых виртуальных машин. В сочетании с Terraform для provisioning инфраструктуры и Ansible для конфигурации приложений, Packer закрывает звено «подготовки базового образа» в полностью автоматизированном DevOps-пайплайне.

Другие термины