2017-06-14 142 views
1

剛開始與Ansible。我配置的主機文件是這樣的:Ansible測試主機失敗

[webserver] 
<remote-server-ip> ansible_user=<user> ansible_private_key_file=<full-path-to-private-ssh-key> 

當我運行:

ansible all -m ping 

我得到:

<remote-server-ip> | UNREACHABLE! => { 
"changed": false, 
"msg": "Failed to connect to the host via ssh: Couldn't read packet: Connection reset by peer\r\n", 
"unreachable": true 

我沒有問題連接,如果我跑:

ssh -i <full-path-to-private-ssh-key> <user>@<remote-server-ip> 

備註:

  1. SSH密鑰沒有密碼。
  2. 該項目位於~/my_project_name
  3. 我也嘗試過使用ansible_connection=local,雖然ansible all -m ping似乎工作,但實際上它所做的只是允許我執行修改Ansible運行的主機的任務。
  4. ansible.cfg文件尚未修改,但它位於不同的目錄中:/etc/ansible/ansible.cfg
+0

運行'ansible webserver -m ping'時會發生什麼? – harshavmb

+0

@harshavmb - 結果是一樣的 –

+0

你可以運行'ansible all -m ping -vv'嗎?它給出了更詳細的日誌 – harshavmb

回答

0

我覺得我看到這個早些時候,你能嘗試添加下面的hosts文件,並看看是否能工程

 ansible_connection=ssh ansible_port=22 
+0

謝謝。 'ansible_connection'是問題 –

1

Ansible默認嘗試連接通過ssh到localhost。對於本地主機,請在您的主機文件中將ansible_connection設置爲本地,如下所示。

<remote-server-ip> ansible_connection=local ansible_user=<user> ansible_private_key_file=<full-path-to-private-ssh-key>

參考this文檔瞭解更多信息。

希望這會有所幫助!

+0

'ansible_connection = local'實際上看起來不起作用。根據[文檔](http://docs.ansible.com/ansible/intro_inventory.html#list-of-behavioral-inventory-parameters),這將設置與主機的非SSH連接 - 這不會由於我使用Ansible通過SSH設置遠程計算機,因此看起來並不有用。有任何想法嗎? –

+0

如果'ansible_connection = local'爲2.2.0.0版本工作並且不適用於2.3.1,那麼您需要提出一個不同的問題,因爲它們不相同。您確認添加上述參數爲您工作。不知道,爲什麼現在不工作。 – harshavmb

+0

其實'ansible_connection = local'通過兩個版本的測試。問題是不應將hosts文件配置爲使用「local」。當您運行劇本時,任務將被執行到本地機器而不是遠程。當測試通過時,這引起了一些混亂,但在遠程服務器上沒有任何更新。無論如何感謝您的建議。 –

0

我發現這是我使用的Ansible版本(2.3.1)的一個問題。使用2.2.0.0版本沒有問題。