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步骤中获取输出。