2014-09-20 111 views
0

当试图从jenkins执行shell执行ansible-playbook时,jenkins会添加额外的引号,导致剧本的执行失败。任何解决这个问题?从jenkins的执行shell中调用ansible-playbook会添加额外的引号

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

的上述的输出是:

  • 的/ usr/local/bin中/ ansible-剧本-i ENV-值角色的值“-evar1 = VAR1-值,VAR2 = var2-值,VAR3 = VAR3值”

如果我如下转义引号:

/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

我会做些什么来避免这个报价问题是使用-e每一个论点:

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

指定是从一个詹金斯参数读取一个可选的参数,例如当它也是有用:

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

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