2014-09-20 21 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,您應該用空格而不是逗號分隔它們。