2017-07-17 20 views
0

我想讓詹金斯執行一個合理的劇本。 但我得到了無法訪問的主機錯誤,我不這樣認爲。Jenkins:無法找到主持人

fatal: [vogo-alpha.cloudapp.net]: UNREACHABLE! => {"changed": false, "msg": "Authentication failure.", "unreachable": true} 

我已經給在ansible hosts文件這個變量,

ansible_ssh_private_key_file=/home/luvpreet/.ssh/id_rsa 

我認爲這是因爲用戶詹金斯正在播放的劇本,它無法讀取此私鑰文件。我試圖讓詹金斯的用戶主文件夾,但它不成功。

如果我切換到用戶luvpreet,然後運行這些劇本,就可以完成。

如何通過jenkins shell切換到另一個用戶? 或

有沒有其他方法可以解決這個問題?

回答

1

爲什麼你的解決方案工作有幾種可能性。最有可能的原因是Ansible正在嘗試作爲未在所述機器上的jenkins用戶ssh到目標機器。我會從不同的角度來處理這個問題。我想安裝Ansible plugin for Jenkins。這允許您使用位於「Manage Jenkins> Manage Credentials」的內置證書。在那裏,您可以複製並粘貼您的密鑰(或指向位於jenkins服務器上的密鑰文件),並將用於SSH的用戶名設置爲目標機器。在你的作業配置中,選擇「調用Ansible Playbook」作爲你的構建步驟而不是shell。將會有一個「Credentials」參數,您可以在其中指定您之前添加的ssh密鑰。其餘的應該很自我解釋。

+0

我已經添加了'ansible_user'參數,所以不會是prblm我認爲 – Luv33preet

+0

您是否確認您是ssh'ing作爲來自目標主機的正確用戶? – kfreezy

+0

我想通了。它使用jenkins用戶來運行劇本,它不能訪問'/ home/luvpreet/.ssh/id_rsa'文件。因此,我複製了'/ var/lib/jenkins/.ssh/id_rsa'文件,並用'ansible_ssh_private_key_file =/var/lib/jenkins/.ssh/id_rsa'取代了它。感謝你的迴應 – Luv33preet