Ansible-galaxy 无法与 sudo 配合使用

Ansible-galaxy 无法与 sudo 配合使用

我在安装插件时遇到了问题ansible-galaxy

我尝试了三件事:

无需 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/响应 OK。我没有使用代理。

由于 API 是 ,这可能是证书问题吗https?我怎么知道 ansible 从哪里挑选这些证书?

答案1

我看到了同样的事情。我通过在 ~/.ansible.cfg 文件中设置 ansible_roles=~/.ansible/roles 并安装角色(无需 sudo)来解决这个问题。在大多数情况下,在系统范围内安装它们是否有意义?不过,这很烦人,并且在以前的 ansible 版本中有效(我使用的是 2.1.0.0)。

答案2

从 2.1.10 开始,ansible-galaxy 屏蔽了连接到 api 服务器的错误消息,并返回了通用的“服务器必须关闭”错误。此问题已在https://github.com/ansible/ansible/issues/16039并且截至目前它是其 2.2 里程碑的一部分(因此大概它将与 ansible 2.2 一起发布)。

我遇到了与您的“使用 sudo 安装”部分相同的问题,这是由于我的用户主目录中的 ~/.netrc 文件格式错误(github PR 专门解决了这个问题)。我能够修复该文件并重新运行 ansible-galaxy,它正确安装了所需的角色。

某些事情导致引发未处理异常的函数这里,也许阅读代码会有所帮助。

相关内容