当尝试从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 $role -e\"var1=$var1, var2=$var2, var3=$var3\"
以上的输出是:
答案 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
,您应该用空格分隔它们,而不是逗号。