2016-09-15 84 views
0

我有下面的玩法,其中我試圖阻止AIX服務器上的WAS實例。在Ansible中傳遞一個變量作爲腳本

--- 
    - hosts: all 
    vars_files: 
    - /etc/ansible/conf/var.yml 
    tasks: 
    - name: stop websphere instances 
     script: {{ was_script }} {{ item }} 
     with_items: "{{ was_inst }}" 

was_script和was_inst在var.yml中被列爲變量。現在,如果我硬編碼的腳本而不是was_script它的作品。但如果我把它稱爲變量,它就不起作用。 它說這是一個YAML語法錯誤,但我似乎無法弄清楚錯誤是什麼。

+0

請粘貼錯誤消息。它有一個答案。 –

+0

'錯誤!同時加載YAML.' 語法錯誤'出錯的行似乎是:'' - 名稱:停止WebSphere instances' '腳本:{{was_script}} {{項目}}'' ^ here' – kottapar

+0

還有的一個解釋你應該在下一行做什麼。 –

回答

1

箭頭^ here指向script: {{ was_script }} {{ item }}行。
您應該引用它script: "{{ was_script }} {{ item }}",因爲它以大括號開頭。
文檔中有關於YAML gotchas的注意事項。

+0

非常感謝;這有所幫助,雖然我遇到了新的錯誤。該劇本現在失敗,說該腳本沒有找到。出於某種奇怪的原因,它在/ etc/ansible/playbooks中搜索,而不是我在var.yml '「failed」中提到的目錄:true,「msg」:「文件或模塊不存在:/ etc/ansible/playbooks /調試程序調用 (調試)p vars ['was_script'] [u'/ tmp/stop_was.sh'「]」)' – kottapar

+0

我使用調試運行它並且這裏是我發現的: ' TMP/stop_was.sh '] (調試)瓦爾[' was_script '] = '/ TMP/stop_was,SH' (調試)p瓦爾[' was_script '] '/ TMP/stop_was.sh'' 和它在那之後運行良好。 – kottapar