hcl2 模板中的 Packer 版本 1.6.1 不支持数据块

Posted

技术标签:

【中文标题】hcl2 模板中的 Packer 版本 1.6.1 不支持数据块【英文标题】:Data block not supported with packer version 1.6.1 in hcl2 templates 【发布时间】:2021-12-19 23:18:46 【问题描述】:

我在安装了 packer 1.7.7 的本地系统中创建了一个 packer json 模板。然后我升级到 hcl2 模板。但是,当我尝试在具有打包程序版本 1.6.1 的詹金斯节点上运行打包程序管道时。它给了我 bwloe 错误

Blocks of type "data" are not expected here.

Error: Unsupported block type

经过研究,我意识到打包器版本 1.6.1 不支持其模板中的数据块,但支持 hcl2 模板,谁能建议我如何用打包器 1 中支持的东西替换下面模板中的数据块。

data "amazon-ami" "autogenerated_1"
  access_key = "$var.aws_access_key"
  filters = 
    root-device-type    = "ebs"
    virtualization-type = "hvm"
    name                = "**** Linux *"
  
  most_recent = true
  region      = "$var.aws_region" 
  owners      = ["$var.owner_id"]
  secret_key  = "$var.aws_secret_key"


when I am trying to consume this ami id in the source block It gives me error.
  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
  ssh_interface = "private_ip"
  ssh_username  = "user"
  subnet_id     = "subnet-********"
  vpc_id        = "vpc-***********"

【问题讨论】:

@Marcin 你能建议一下吗 进展如何?仍然不清楚为什么要升级打包程序? 【参考方案1】:

jenkins 节点上的打包器管道,打包器版本为 1.6.1。

这样的旧版本不支持它。来自docs:

注意:数据源是 Packer 1.7 及更高版本中包含的一项功能

【讨论】:

这个@Marcin 是否有解决方法 如何在没有数据块的情况下在我的 hcl2 模板中传递源图像过滤器 @knowledge20 很遗憾,我不知道。最好使用当前版本的打包程序,而不是旧版本。

以上是关于hcl2 模板中的 Packer 版本 1.6.1 不支持数据块的主要内容,如果未能解决你的问题,请参考以下文章

Packer:创建 proxmox 虚拟机而不是模板

Packer 自动化镜像 Windows 安装过程

Packer 自动化镜像构建

DevOps专题|Packer使用教程

Packer 错误消息:找不到名为 'packer-virtualbox-iso-# 的注册机器

Vagrant - 使用 Packer 制作 Box 虚拟机镜像