ansible-galaxy角色失败,"没有权限修改/ etc / ansible / roles /"

时间:2014-12-29 00:00:28

标签: ansible osx-yosemite ansible-galaxy

tl;dr = OS X用户如何推荐解决此权限错误?

我在OS X 10.10.1上,我最近安装了Ansible,运行以下内容:

sudo pip install ansible --quiet
sudo pip install ansible --upgrade

我想从一个galaxy角色开始安装自制软件,然后运行这个以下错误:

$ ansible-galaxy install geerlingguy.homebrew
- downloading role 'homebrew', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-homebrew/archive/1.0.1.tar.gz
- extracting geerlingguy.homebrew to /etc/ansible/roles/geerlingguy.homebrew
- error: you do not have permission to modify files in /etc/ansible/roles/geerlingguy.homebrew
- geerlingguy.homebrew was NOT installed successfully.
- you can use --ignore-errors to skip failed roles.

虽然我看到/etc归root所有,但我没有在文档中看到任何说明我应该chmod任何内容的说明。

供参考:

$ ansible --version
ansible 1.8.2
  configured module search path = None

这是预期的还是我的安装错误?

3 个答案:

答案 0 :(得分:17)

角色的默认位置为/etc/ansible/roles(版本< = 2.3。自v2.4起,默认位置已更改为~/.ansible/roles/an issue has been raised)。使用--roles-path时,您需要指定ansible-galaxy。以下是ansible-galaxy install --help所说的内容:

-p ROLES_PATH, --roles-path=ROLES_PATH
    The path to the directory containing your roles. The
    default is the roles_path configured in your
    ansible.cfg file (/etc/ansible/roles if not
    configured)

您还可以在roles_path中设置ansible.cfg; see the documentation for details

答案 1 :(得分:4)

或者您可以使用brew安装ansible。要做到这一点,你需要运行:

brew install ansible

如果您之前有任何安装,您可能会看到如下消息:

  

错误:brew link步骤未成功完成公式   已构建,但没有符号链接到/ usr / local无法符号链接   bin / ansible目标/ usr / local / bin / ansible已经存在。你可能想要   删除它:rm'/ usr / local / bin / ansible'

     

强制链接并覆盖所有冲突的文件:brew链接   --overwrite ansible

     

列出所有要删除的文件:brew link --overwrite   --Dry-run ansible

     

可能存在冲突的文件是:/ usr / local / bin / ansible   / usr / local / bin / ansible-console / usr / local / bin / ansible-doc   / usr / local / bin / ansible-galaxy / usr / local / bin / ansible-playbook   / usr / local / bin / ansible-pull / usr / local / bin / ansible-vault

所以,运行brew link --overwrite ansible来解决这个问题。现在,您可以在没有sudo的情况下安装任何角色。

示例:

  

»ansible-galaxy install bennojoy.redis
   - 下载角色'redis',由bennojoy拥有    - 从https://github.com/bennojoy/redis/archive/master.tar.gz下载角色    - 将bennojoy.redis提取到/usr/local/etc/ansible/roles/bennojoy.redis
   - bennojoy.redis已成功安装

答案 2 :(得分:2)

正如我所看到您使用“sudo”安装Ansible,我认为继续使用“sudo”进行ansible-galaxy安装是可以的。这就是我刚刚做的事情。