首页 > 解决方案 > Packer 无法验证 jenkins 作业中的 hcl2 模板

问题描述

我正在努力构建我创建的 json 模板工作正常的打包程序管道,但根据打包程序的建议,我正在努力将其升级到 hcl2 模板。当我运行 hcl2_upgrade 命令时。我看到一个 json 模板被转换为 .pkr.hcl 模板,但是在运行它时。我已经按照打包程序文档中的建议对模板进行了一些自定义。通过 jenkins job 执行管道时,它给了我错误。

template_pqr.json.pkr.hcl:下面是我的模板的起始行,它会抛出错误

variable "ami_name" {
  type    = string
  default = "abc"
}

我的詹金斯文件是

stage('packer template validation') {
            steps{
                    sh label: 'Validate Template', script: "packer validate template_pqr.json.pkr.hcl"
           }
        }
        stage('AMI creation') {
            steps{
                    withAWS(credentials: 'credent') {
                        sh label: 'build template_pqr ', script: "packer build template_pqr.json.pkr.hcl"
                    }
            }
        }
       }

错误:

packer validate template_pqr.json.pkr.hcl
Failed to parse template: Error parsing JSON: invalid character 'v' looking for beginning of value
At line 2, column 2 (offset 2):
    1: 
    2: v

标签: amazon-web-servicesjenkinsjenkins-pipelinepackerhcl

解决方案


当该validate命令针对版本 1.6 之前的 Packer 版本中的 HCL2 文件时,将引发该错误消息。这是 Packer 的版本,它首先引入了对validate命令的 HCL2 支持(即使该build命令在 1.5 中受支持)。您需要更新您的 Jenkins Pipeline 代理以包含安装的 Packer 版本,该版本至少为 1.6.0。我会推荐 1.6.x 的最新版本,因为 1.7 引入了插件分离,您的模板和配置可能不支持。

版本 1.6.0 发行说明:功能


推荐阅读