使用Packer变量文件时遭遇'Unsupported attribute'错误求助
解决Packer中"Unsupported attribute"错误(var.instance_type未识别)
问题原因
你直接在模板里使用var.instance_type,但没有在Packer模板中提前声明这个变量。Packer的变量机制要求:必须先在模板中定义变量,才能从.auto.pkrvars.hcl这类变量文件中读取对应值,否则会判定该属性不存在,抛出"Unsupported attribute"错误。
修复步骤
1. 在模板中添加变量声明块
在packer-build.pkr.hcl(注意你文件名写成了packer-build.pr.hcl,建议修正为标准后缀)的packer块之后、locals块之前,添加变量定义:
# 新增变量声明 variable "instance_type" { type = string description = "EC2实例类型" # 可选:设置默认值,避免变量文件未提供时出错 default = "t2.micro" } variable "base_ami_region" { type = string description = "基础AMI所在区域" default = "us-east-2" }
2. 修正变量文件的语法错误
你的variables.auto.pkrvars.hcl最后多了一个多余的},会导致语法错误,删除后内容如下:
instance_type = "t2.micro" base_ami_region = "us-east-2" # 其他变量继续写在这里...
验证修复
完成上述修改后,运行packer build .,Packer就能正确识别并读取变量文件中的instance_type值,不会再抛出错误。
内容的提问来源于stack exchange,提问作者Eric27710
相关产品推荐
相关产品推荐

