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 运行

您可以使用 onlyexcept 配置来仅使用特定 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"]
  }
}

onlyexcept 中的值是 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 链将从 buildprovision 步骤中获取输出。

results matching ""

    No results matching ""