我想知道在模塊執行時是否有辦法打印信息 - 主要是作爲證明過程正在運行並且沒有掛起的手段。具體來說,我試圖在執行cloudformation模塊期間得到反饋。我試圖修改(Python)的源代碼,包括以下內容:Ansible - 我可以在模塊執行期間打印信息嗎?
def debug(msg):
print json.dumps({
"DEBUG" : msg
})
...
debug("The stack operation is still working...")
這是什麼做的,當然,是存儲所有這些輸出,僅打印出來後,所有的模塊都執行完畢。所以對於特別大的雲信息模板,這意味着我等待大約5分鐘左右,然後突然在屏幕上看到大量文字出現在最後。我期待的是每隔x秒打印一次「堆疊操作仍在工作......」。
看來Asynchronous Actions and Polling是我正在尋找的......但是這也沒有奏效。整個任務「爲{{stackname}}啓動CloudFormation」完全被忽略。請參閱下面從我的劇本的相關(YAML)片段:
- name: Launch CloudFormation for {{ stackname }}
cloudformation: >
stack_name="{{ stackname }}" state=present
region="{{ region }}" disable_rollback=true
template="{{ template }}"
register: cloud
args:
template_parameters:
KeyName: "{{ keyName }}"
Region: "{{ region }}"
SecurityGroup: "{{ securityGroup }}"
BootStrapper: "{{ bootStrapper }}"
BootStrapCommand: "powershell.exe -executionpolicy unrestricted -File C:\\{{ bootStrapper }} {{ region }}"
S3Bucket: "{{ s3Bucket }}"
async: 3600
poll: 30
這告訴我,異步是爲典型的shell命令,而不是複雜的模塊,如cloudformation。 或 - 我可能做錯了什麼。
任何人都可以對這種情況有所瞭解嗎?再次,對於需要一段時間的大型雲計算任務,我希望定期指示任務仍在運行,而不是掛起。我感謝幫助!
謝謝。我至少可以做一些這樣的事情,以30秒的間隔報告一個簡單的提示「操作仍在進行......」。 Ansible並不支持真正的異步過程,這真是一種遺憾。 – Brian 2014-09-18 20:04:10
雖然在實踐中,這似乎不適用於CloudFormation模塊。同樣,看起來只有簡單的shell命令可以異步執行(或作爲後臺進程)。**所以答案仍然是一個具體的NO。** – Brian 2014-09-19 14:55:42