我在安装插件时遇到了问题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,它正确安装了所需的角色。