构建不可变机器镜像
packer 从基础镜像启动临时实例,执行 provisioner 安装软件,再产出云镜像或容器镜像。它适合构建不可变基础设施,不负责运行时编排。
packer init .
packer validate .
packer fmt .
packer build .
packer build -var 'version=1.2.3' .
packer build -only='amazon-ebs.ubuntu' .
packer inspect .
packer hcl2_upgrade template.json
HCL 模板:
packer {
required_plugins {
amazon = {
source = "github.com/hashicorp/amazon"
version = "~> 1.3"
}
}
}
source "amazon-ebs" "ubuntu" {
ami_name = "app-{{timestamp}}"
instance_type = "t3.micro"
region = "ap-southeast-1"
source_ami = "ami-0123456789"
ssh_username = "ubuntu"
}
build {
sources = ["source.amazon-ebs.ubuntu"]
provisioner "shell" {
script = "scripts/setup.sh"
}
}
packer init 安装插件;缺少插件时 validate/build 都会失败。hcl2_upgrade 后再人工检查。-only 的值写错会静默不构建。-var-file 或环境变量提供。terraform — 使用构建好的镜像vagrant — 本地虚拟机环境docker — 容器镜像构建