post-processor
块
注意:此页面是关于 Packer 的 HCL2 模板的。 HCL2 模板最初作为 Beta 功能被 Packer 1.5 版引入。从 v1.7 开始,HCL2 支持不再处于测试阶段,并且是编写 Packer 配置的首选方式。对于稳定的旧风格配置语言,请参阅模板文档。从 v1.6.2 开始,您可以使用 hcl2_upgrade
命令将遗留的 JSON 模板转换为 HCL2 配置文件。
post-processor
块声明了后处理器的配置方式。
# builds.pkr.hcl
build {
# ... build image
post-processor "checksum" { # checksum image
checksum_types = [ "md5", "sha512" ] # checksum the artifact
keep_input_artifact = true # keep the artifact
}
post-processor "amazon-import" { # upload image to amazon
}
}
每个 post-processor
会在它存在的 build
完成之后运行。后处理器从构建中获取制品。后处理器是可选的,它们可用于上传制品、重新打包等。可用的后处理器列表可以在后处理器部分找到。
在 post-processors
中定义 post-processor
时,后处理器也可以从另一个后处理器获取制品,这是一个链式后处理器列表。
注意:默认情况下,后处理器接收到的输入制品将被自动删除。
保留输入制品
为防止输入工件被删除,可以将 keep_input_artifact
字段设置为 true
以使 Packer 保留这两个制品。例如,如果我们想对一个制品进行校验和并保留该制品:
# builds.pkr.hcl
build {
# ...
post-processor "checksum" {
checksum_types = [ "md5", "sha512" ]
keep_input_artifact = true
}
}
选择 source
运行
您可以使用 only
或 except
配置来仅使用特定 source
运行后处理器:only
将仅在指定 source
上运行后处理器,except
将阻止在指定 source
上运行后处理器。
only
的示例如下所示,但 except
的用法实际上是相同的:
# builds.pkr.hcl
build {
# ...
post-processor "checksum" {
checksum_types = [ "md5", "sha512" ]
keep_input_artifact = true
only = ["amazon-ebs.example"]
}
}
only
或 except
中的值是 source
的名称,而不是构建器类型。
如果你想在从命令行运行 packer build
时排除某些后处理器,你可以这样做:
packer build --except=checksum mytemplate.pkr.hcl
将不会运行 checksum
后处理器。此命令通过引用后处理器名称来排除后处理器。默认情况下,后处理器以其类型命名,如上面例子里 checksum
所示。您可以通过向每个后处理器块添加 name
字段来使后处理器的名称唯一。
虽然 -except
标志可用于在命令行上过滤掉后处理器,但 -only
标志对后处理器不起作用。如果您希望只为拥有给定的 source
的构建运行后处理器,则必须在 hcl 模板中使用 only=[source]
语法,如上所述。
构建上下文变量(Build Contextual Variables)
Packer 允许从配置器读取连接信息和实例的基本状态信息。这些信息存储在 build
变量中。查看上下文变量文档以了解更多信息,并查看如何使用它们的示例。
相关信息
post-processors
块允许定义一个或多个后处理器链,这个post-processor
链将从build
和provision
步骤中获取输出。