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

Jenkins调用Ansible Tower多extraVars参数时部署失败排查

问题原因及解决方法

你的报错核心是extraVars的YAML格式不合法,具体问题有两个:

  • YAML语法里,键值对结尾不能加逗号(这是JSON的语法规则,YAML不需要)
  • 缩进不规范,容易触发解析失败

修正方案1:用标准YAML格式传递参数

删掉每个键值对后面的逗号,统一缩进(比如每级用4个空格),修改后的代码如下:

stage("Ansible Deployment"){
  steps{
      script{
      ansibleTower(
        towerServer: 'Prod Tower',
        towerCredentialsId: '',
        templateType: 'job',
        jobTemplate: 'Simple Test',
        towerLogLevel: 'full',
        inventory: 'Demo Inventory',
        removeColor: false,
        verbose: true,
        extraVars: """---
            BRANCH_NAME: '${env.GIT_BRANCH}'
            targeted_hosts: '${env.targeted_hosts}'
                """
    )
  }
 }
}

修正方案2:用JSON格式传递参数(规避Groovy字符串解析冲突)

如果想用JSON,要避免Groovy解析双引号时的冲突,用三个单引号包裹JSON内容即可,示例如下:

stage("Ansible Deployment"){
  steps{
      script{
      ansibleTower(
        towerServer: 'Prod Tower',
        towerCredentialsId: '',
        templateType: 'job',
        jobTemplate: 'Simple Test',
        towerLogLevel: 'full',
        inventory: 'Demo Inventory',
        removeColor: false,
        verbose: true,
        extraVars: '''{
            "BRANCH_NAME": "'${env.GIT_BRANCH}'",
            "targeted_hosts": "'${env.targeted_hosts}'"
        }'''
    )
  }
 }
}

额外说明

单个参数时没报错,是因为单个键值对后的逗号会被解析器忽略,但多个参数时,逗号会直接触发YAML语法校验失败,导致报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:25:18