2016-10-06 14 views
0

有沒有什麼辦法在使用回調函數完成每個可執行的劇本任務(而不是整個劇本)時捕獲stdout,stderr?如何使用回調捕獲stdout/stdmsg爲每個有用的劇本任務?

預定義的「playbook_on_task_start」不符合實際需求,因此需要有一項規定來獲取整個劇本執行過程中每個單獨任務完成的統計信息。

def playbook_on_task_start(self, name, is_conditional): 
     pass 

回答

0

這裏的方法是在任務開始時創建任務的散列,並在任務結束時用數據填充散列。
當playbook完成後,您可以分析您的散列並打印出您需要的內容。

請參閱profile_tasks.py以獲得全局stats散列和存儲uuid任務的想法。
你需要新增v2_runner_on_...的處理程序從結果中獲取stdout,並將其放入self.stats[result._task._uuid].stdout
然後計算你的統計v2_playbook_on_stats

+0

謝謝!我想知道在Playbook中是否有任何完成每個單獨任務的回調。 –

+0

你可以檢查所有可用的回調[這裏](https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/callback/__init__.py)。正如我所說的,你需要定義'v2_runner_on _...'回調,例如'v2_runner_on_ok'成功完成任務; 'v2_runner_on_failed'用於失敗的任務,等等。還有一些循環任務'v2_runner_item_on ...'的回調。 –

+0

謝謝康斯坦丁! –

相關問題