You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Packer 1.6.1不支持HCL2模板data块,如何替换以实现AMI查询功能?

问题解决方法

Packer 1.6.1版本的HCL2实现未支持data数据源块,推荐以下两种替换方案:

方案1:使用Amazon Builder原生的source_ami_filter配置(推荐)

AWS EBS等亚马逊相关的Packer Builder原生内置了AMI过滤能力,完全可以替代amazon-ami类型的data块,无需额外外部依赖:

修改后的source块代码示例:

source "amazon-ebs" "你的source名称" {
  ami_name                    = "${var.ami_name}"
  associate_public_ip_address = false
  force_deregister            = true
  iam_instance_profile        = "abc"
  instance_type               = "****"
  region                      = "${var.aws_region}"
  # 删掉原来的source_ami = data.amazon-ami.autogenerated_1.id 这行
  # 新增以下source_ami_filter配置,直接复用原来data块的参数
  source_ami_filter {
    filters = {
      root-device-type    = "ebs"
      virtualization-type = "hvm"
      name                = "**** Linux *"
    }
    most_recent = true
    owners      = ["${var.owner_id}"]
  }
  access_key                  = "${var.aws_access_key}"
  secret_key                  = "${var.aws_secret_key}"
  ssh_interface = "private_ip"
  ssh_username  = "user"
  subnet_id     = "subnet-********"
  vpc_id        = "vpc-***********"
}

该方案不需要修改任何流水线逻辑,仅调整模板内容即可直接在Packer 1.6.1上运行。

方案2:外部查询AMI ID作为变量传入

如果有跨多平台复用AMI查询逻辑的需求,可以先通过AWS CLI查询到符合条件的AMI ID,再作为变量传递给Packer运行:

步骤1:编写AWS CLI查询命令(Jenkins流水线中执行)

AMI_ID=$(aws ec2 describe-images \
  --region ${AWS_REGION} \
  --owners ${OWNER_ID} \
  --filters "Name=root-device-type,Values=ebs" "Name=virtualization-type,Values=hvm" "Name=name,Values=**** Linux *" \
  --query 'sort_by(Images, &CreationDate)[-1].ImageId' \
  --output text)

步骤2:运行Packer时传入变量

packer build -var "aws_access_key=${AWS_ACCESS_KEY}" -var "aws_secret_key=${AWS_SECRET_KEY}" -var "source_ami_id=${AMI_ID}" 你的模板文件路径

步骤3:修改Packer模板

首先新增变量声明:

variable "source_ami_id" {
  type = string
  description = "外部传入的源AMI ID"
}

然后修改source块中的对应配置:

source_ami = var.source_ami_id

完全删除原来的data "amazon-ami"块即可。

内容的提问来源于stack exchange,提问作者knowledge20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:36:00