需要長時間運行的命令可以放到后台去,在命令開始運行后我們也可以檢查運行的狀態.如果運行命令后,不想獲取返回的信息, 可執行如下命令:
ansible all -B 3600 -P 0 -a "/usr/bin/long_running_operation --do-stuff"
如果你確定要在命令運行后檢查運行的狀態,可以使用 async_status 模塊.前面執行后台命令后會返回一個 job id, 將這個 id 傳給 async_status 模塊:
ansible web1.example.com -m async_status -a "jid=488359678239.2844"
獲取狀態的命令如下:
ansible all -B 1800 -P 60 -a "/usr/bin/long_running_operation --do-stuff"
其中 -B 1800 表示最多運行30分鍾, -P 60 表示每隔60秒獲取一次狀態信息.
Polling 獲取狀態信息的操作會在后台工作任務啟動之后開始.若你希望所有的工作任務快速啟動, --forks 這個選項的值 要設置得足夠大,這是前面講過的並發進程的個數.在運行指定的時間(由“-B”選項所指定)后,遠程節點上的任務進程便會被終止.一般你只能在把需要長時間運行的命令或是軟件升級這樣的任務放到后台去執行.對於 copy 模塊來說,即使按照前面的示例想放到后台執行文件傳輸,實際上並不會如你所願.