Sudo

Ansible-galaxy 不適用於 sudo

  • August 13, 2016

我在安裝外掛時遇到問題ansible-galaxy

我嘗試了 3 件事:

不使用 sudo 安裝:

ansible-galaxy install sfromm.epel
[WARNING]: - sfromm.epel was NOT installed successfully: Could not update files in /etc/ansible/roles/sfromm.epel: [Errno 13] Permission denied: '/etc/ansible/roles/sfromm.epel'

這裡沒有什麼奇怪的,顯然我的使用者不能在那個文件夾中寫入。


使用 sudo su 安裝:

$ sudo su
root@notebook# ansible-galaxy install  sfromm.epel 
- ...
- sfromm.epel was installed successfully

如您所見,我可以通過這種方式安裝外掛。


使用 sudo 安裝:

這是我不明白髮生了什麼的地方。

$ sudo ansible-galaxy install  sfromm.epel
[WARNING]: - sfromm.epel was NOT installed successfully: The API server (https://galaxy.ansible.com/api/) is not responding, please try again later

sudo curl https://galaxy.ansible.com/api/響應正常。我不支持代理。

由於 API 是證書,這可能是一個問題https嗎?我怎麼知道 ansible 是從哪裡挑選的?

我看到同樣的事情。我通過在 ~/.ansible.cfg 文件中設置 ansible_roles=~/.ansible/roles 並在不需要 sudo 的情況下安裝角色來解決它。在大多數情況下,在系統範圍內安裝它們是否有意義?不過,這很煩人,並且在以前版本的 ansible 中工作(我使用的是 2.1.0.0)。

從 2.1.10 開始,ansible-galaxy 屏蔽了連接到 api 伺服器的錯誤消息,並返回了一個通用的“伺服器必須關閉”錯誤。這已在https://github.com/ansible/ansible/issues/16039得到修復,並且目前是他們 2.2​​ 里程碑的一部分(因此大概它將與 ansible 2.2 一起發布)。

我遇到了與您的“使用 sudo 安裝”部分相同的問題,這是由於我的使用者主目錄中的 ~/.netrc 文件格式錯誤(github PR 專門針對該文件)。我能夠修復文件並重新執行 ansible-galaxy 並正確安裝了所需的角色。

某些原因導致此函式在此處引發未處理的異常,也許通讀程式碼會有所幫助。

引用自:https://serverfault.com/questions/777067