Packer动态源配置中shell-local后处理器导致Artifact重复的原因
Packer添加shell-local后处理器后AMI Artifact重复的成因
- shell-local的透传特性:
shell-local后处理器仅负责执行本地Shell命令,不会修改或消耗输入的构建Artifact。执行完成后,它会把输入的Artifact原封不动地传递给后续流程。 - 多builder场景的后处理器逻辑:当你通过dynamic source为每个Ubuntu版本生成独立的builder时,每个builder的输出Artifact都会单独进入后处理器链。如果直接把
shell-local放在顶级post-processors数组里,Packer会把每个builder的原始输出,加上shell-local透传的同一Artifact,都算进最终的输出集合,导致每个AMI被重复报告两次。 - 未正确分组后处理器:如果不用
type: sequence把shell-local包裹成独立的后处理器序列,Packer会默认将后处理器的输入和输出都纳入最终Artifact列表。只要把shell-local放进sequence组里,就只会保留序列的最终输出(也就是透传后的Artifact),避免重复。
举个配置对比:
错误示例(导致重复):
post-processors = [ { type = "shell-local" inline = ["echo 完成AMI构建"] } ]
正确示例(解决重复):
post-processors = [ { type = "sequence" post-processors = [ { type = "shell-local" inline = ["echo 完成AMI构建"] } ] } ]
内容的提问来源于stack exchange,提问作者Georgii
相关产品推荐
相关产品推荐

