Ansible
如何從 Jinja 模板中觸發自定義錯誤?
雖然 Ansible 本身有觸發自定義錯誤的方法,但我找不到 Jinja 類似的東西。
我目前的方法使用語法錯誤:
{% if 'ansible_mounts' in hostvars[host] %} # {{ host }} knows its mount-points {% else %} # {% error!! No ansible_mounts listed for host - fact-gathering must've failed %} {% endif %}
但是這些在執行時渲染效果很差——需要查看模板文件並蒐索錯誤(渲染甚至不包括行號!)。
有沒有辦法從 Jinja-template 中輸出簡潔的失敗消息?
評論中的回答:
沒有簡單的方法可以做到這一點——只能通過自定義外掛。有關詳細資訊,請參閱:https ://stackoverflow.com/questions/21778252/how-to-raise-an-exception-in-a-jinja2-macro
Ansible 將強製過濾器添加到 Jinja,可用於執行此操作:
{{ ('OK text' if condition_ok) | mandatory('Text of error message') }}
給出失敗:
fatal: [hostname]: FAILED! => {"msg": "Text of error message"}
(替換
condition_ok
為您需要進行的檢查;如果不應該替換,則可以。'OK text'
)''