从jenkins的执行shell调用ansible-playbook会添加额外的引号

时间:2014-09-20 06:45:31

标签: jenkins ansible-playbook

当尝试从jenkins执行shell执行ansible-playbook时,jenkins正在添加额外的引号,导致ansible-playbook执行失败。有没有解决这个问题?

/usr/local/bin/ansible-playbook -i $env $role -e"var1=$var1, var2=$var2, var3=$var3"

以上的输出是:

  • / usr / local / bin / ansible-playbook -i env-value role-value'-evar1 = var1-value,var2 = var2-value,var3 = var3-value'

如果我按以下方式转义引号:

/usr/local/bin/ansible-playbook -i $env $role -e\"var1=$var1, var2=$var2, var3=$var3\"

以上的输出是:

  • / usr / local / bin / ansible-playbook -i env-value role-value'-e“var1 = var1-value,''var2 = var2-value,''var3 = var3-value”'

1 个答案:

答案 0 :(得分:1)

我要做的是避免这个引用问题,为每个参数使用-e

extra_args+="-e var1=$var1 -e var2=$var2  -e var3=$var3"
ansible-playbook  -i $env $role $extra_args

在指定从jenkins参数读入的可选参数时也很有用,例如:

if [[ -z $var1 ]]; then
  extra_args+="-e var1=$var1"
fi

另请注意,if you specify multiple extra vars在命令行上使用-e,您应该用空格分隔它们,而不是逗号。