Packer 无法验证 jenkins 作业中的 hcl2 模板

Posted

技术标签:

【中文标题】Packer 无法验证 jenkins 作业中的 hcl2 模板【英文标题】:Packer Unable to validate the hcl2 template in jenkins job 【发布时间】:2021-12-17 07:24:10 【问题描述】:

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

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

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

我的jenkisn文件是

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

【问题讨论】:

【参考方案1】:

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

version 1.6.0 release notes: features

【讨论】:

以上是关于Packer 无法验证 jenkins 作业中的 hcl2 模板的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins无法签出Git存储库 - 主机密钥验证失败

使用jenkins-cli.jar和用户身份验证在Jenkins中导出/导入作业

Packer 自定义映像构建失败并出现 ssh 身份验证错误

无法在jenkins中使用变量参数调用远程参数化作业。

Jenkins 作业失败,无法对远程执行 scp,权限被拒绝(公钥、密码)

JENKINS 身份验证失败