我有一些很長的 saltstack 編排狀態,我想向其中添加一些資訊性訊息(例如:將在 minion foo 上應用一些狀態),并且必須立即列印此訊息(而不是在所有操作完成后)。
Jinja 日志訊息 ( {% do salt.log.error("Some message) %}) 不合適(它們在 state 實際運行之前列印)
test.echo 模塊也不適合(在所有操作完成后列印訊息)
test_blabla:
salt.runner:
- name: salt.cmd
- arg:
- test.echo
- some_blabla
有沒有辦法在狀態執行期間列印訊息?可能是我錯過了什么?
uj5u.com熱心網友回復:
有辦法作弊。只要您在談論編排并且您正在通過salt-run.
而你幾乎擁有了它。除了將答案混入 jinja 并將錯誤的模塊混入狀態。日志訊息在任何運行之前出現的原因是因為您在 jinja 中呼叫它。但您不必通過 jinja 呼叫它。你可以在一個狀態下呼叫它。
test_blabla:
module.run:
- name: log.error
- message: some_blabla
test_oh:
salt.runner:
- name: salt.cmd
- arg:
- test.sleep
- 10
這完全是一種hacky,因為salt 并不打算這樣做。salt 運行異步,這意味著它在完成之前不會回傳。或者可能根本不會直接回傳,您應該在其他地方檢查結果。另一種方法是讓狀態觸發事件并觀察事件總線而不是狀態運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/361071.html
下一篇:選擇帶有輸入文本的選項
