2016-03-12 46 views
1

我試圖使用可以配置我必須使用的環境。特別是,我需要編寫一個重新啓動服務器任務,所以我寫了這個任務:Ansible wait_for重新啓動

- name: waiting for server to come back 
    local_action: wait_for 
    host={{ ansible_hostname }} 
    port=22 
    state=started 
    delay=50 
    timeout=300 
    sudo: false 

但任務失敗,達到即使服務器重新啓動正確的超時。

我想知道是否因爲我的SSH配置而失敗。與這些服務器的連接通過代理(ProxyCommand,在~/.ssh/config)完成。


FROM VERBOSE OUTPUT 

<servername> ESTABLISH SSH CONNECTION FOR USER: username 

<servername> SSH: EXEC ssh -C -vvv -o ControlMaster=False -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=username -o ConnectTimeout=10 -tt hostname 

... 

fatal: [servername -> localhost]: FAILED! => {"changed": false, "elapsed": 300, "failed": true, "invocation": {"module_args": {"connect_timeout": 5, "delay": "10", "exclude_hosts": null, "host": "hostname", "path": null, "port": "22", "search_regex": null, "state": "started", "timeout": "300"}, "module_name": "wait_for"}, "msg": "Timeout when waiting for host:22"} 

我不知道是否有關,但在輸出:

hostname != servername: hostname = foo, servername = foo.bar.com 

我覺得hostname=ansible_hostnameservername=inventory_hostname


Ansible版本:2.0.1.0 ansible

+0

有什麼錯誤? –

+0

你可以用'-vvvv'執行嗎?我剛剛在服務器上試過這個代碼,它也使用ProxyCommand訪問,它工作得很好。 –

+0

我有幾乎相同的任務,也使用ProxyCommand和工程。我不完全確定,但我相信這是我必須禁用SSH會話(ControlMaster)的原因。你使用ssh會話嗎? – udondan

回答

0

這是一個連接問題。爲了擺脫這個問題,我增加了ssh超時。

一個簡單的方法來做到這一點它在ansible腳本的同一目錄下創建一個ansible.cfg文件,並把這個內容裏面:

[defaults] 
timeout = xx 

其中xx對我來說是30