2016-01-23 100 views
1

我正在學習理智,所以我寫了最簡單的劇本和模塊,我可以想到,它失敗了。爲什麼我的自定義Ansible模塊失敗?

我的劇本

--- 
- hosts: demo 
    tasks: 
    - name: install demo 
     action: install 

我模塊

echo "changed=True msg=OK" 

下似乎罰款:

  • bash腳本模式是755
  • 劇本被鏈接到正確模塊

這是輸出:

FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "changed=True msg=OK\r\n", "msg": "MODULE FAILURE", "parsed": false} 

我在做什麼錯?我該如何做這項工作?

回答

7

模塊must be JSON的輸出。因爲輸出應該是有效的JSON

print "some status message" 

試試這個:

echo "{\"changed\": false, \"msg\" : \"ok\"}" 

docs

你應該也從來沒有一個模塊中做到這一點。

和:

如果一個模塊返回標準錯誤或以其他方式不能產生有效的JSON,實際輸出仍將在Ansible顯示,但該命令將不會成功。

+0

請更正您的答案,使其成爲回聲線中的有效json。 'echo「{\」changed \「:false}」' –

+1

我認爲1.8版本中的非JSON輸出已被刪除。它被稱爲「寶貝JSON」。 – tedder42

相關問題