Ответ
Да, я активно использовал HashiCorp Packer для создания immutable-образов виртуальных машин. Это позволяло нам иметь предварительно настроенные, проверенные и согласованные образы для быстрого развертывания инфраструктуры через Terraform.
Например, я создавал образ AWS AMI с предустановленным Docker, системными пакетами для мониторинга (Prometheus node_exporter) и настройками безопасности (SSH, firewall).
Пример шаблона Packer для Ubuntu 22.04 в AWS:
# packer.pkr.hcl
source "amazon-ebs" "base-ubuntu" {
ami_name = "company-base-ubuntu-22.04-{{timestamp}}"
instance_type = "t3.small"
region = "eu-west-1"
source_ami_filter {
filters = {
name = "ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"
root-device-type = "ebs"
virtualization-type = "hvm"
}
owners = ["099720109477"] # Canonical
most_recent = true
}
ssh_username = "ubuntu"
tags = {
Environment = "BaseImage"
ManagedBy = "Packer"
}
}
build {
sources = ["source.amazon-ebs.base-ubuntu"]
# Провиженинг: установка базовых пакетов
provisioner "shell" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y docker.io awscli jq",
"sudo systemctl enable docker"
]
}
# Загрузка конфигураций для мониторинга
provisioner "file" {
source = "files/node_exporter.service"
destination = "/tmp/"
}
provisioner "shell" {
script = "scripts/setup-monitoring.sh"
}
}
После сборки такой образ использовался в Terraform как source_ami для Auto Scaling Groups, что гарантировало идентичность всех инстансов и ускоряло их запуск.