2017-03-24 69 views
0

我一直試圖在模式下調用'restart the network'服務,因爲顯然我將在重新啓動網絡後從SSH連接斷開連接虛擬機,所以我想有一個超時過程來做到這一點。Ansible:服務模塊不支持異步模式

爲了做到這一點我這樣做的我重啓網絡任務中:

- name: Restart network 
    become: true 
    service: name=network state=restarted 
    async: 1000 
    poll: 0 

當Ansible獲取到這一點,我得到這個錯誤:

fatal: [build]: FAILED! => {"failed": true, "msg": "async mode is not supported with the service module"} 

,我發現這是一個Ansible bug尚未投入生產,它們仍然在開發分支中,我不想這樣做,因爲這也意味着Ansible中可能存在更多的錯誤。

因此,我認爲有兩種選擇,要麼我等待Ansible的新版本帶來bug修復或更改async: 0 and poll: 0等待服務完成(它永遠不會完成),所以當到達該點時,我按CTRL + C手動停止服務。

我不想去那些路線,因爲它們對我來說效率不高,所以我想知道是否有解決方案在這一點上會更好。

+0

你總是可以使用'shell'模塊作爲臨時解決方法... –

+0

這樣可以工作嗎? – VaTo

回答

1

試試這個作爲臨時解決方法:

- name: Restart network 
    become: yes 
    shell: sleep 2 && service network restart 
    async: 1 
    poll: 0 

而且不要忘了wait_for端口22這個任務後,以避免host unreachable錯誤。

+0

如何添加'wait_for'? – VaTo

+0

http://stackoverflow.com/a/39174390/2795592 –

+0

這樣的事情? http://pastebin.centos.org/74291/85097149/我的意思是,我可以在同一個文件中添加wait_for嗎? – VaTo