Подтвердить что ты не робот

Роль неработающей галактики терпит неудачу с "не имеют разрешения на изменение /etc/ansible/role/ "

tl;dr= Как пользователи OS X рекомендуют обойти эту ошибку разрешений?

Я на OS X 10.10.1, и я недавно установил Ansible, выполнив следующее:

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

Я хочу начать с роли галактики, чтобы установить homebrew и пошел запускать этот со следующей ошибкой:

$ 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

Ожидается ли это или моя установка как-то не так?

4b9b3361

Ответ 1

Расположение ролей по умолчанию - /etc/ansible/roles. Вы должны указать --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; Подробнее см. в документации.

Ответ 2

Или вы можете использовать brew для установки ansible. Для этого вам нужно запустить:

brew install ansible

Если у вас были какие-либо предыдущие установки, возможно, вы увидите следующее сообщение:

Ошибка: шаг brew link не завершился успешно. Формула построенный, но не связанный символом в /usr/local. Не может символическая ссылка bin/ansible Target/usr/local/bin/ansible уже существует. Вы можете захотеть для удаления: rm '/usr/local/bin/ansible'

Чтобы заставить ссылку и перезаписать все конфликтующие файлы: brew link --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 установить bennojoy.redis
- загрузка роли 'redis', принадлежащей bennojoy
- загрузка роли из https://github.com/bennojoy/redis/archive/master.tar.gz
- извлечение bennojoy.redis в /usr/local/etc/ansible/roles/bennojoy.redis
- bennojoy.redis был успешно установлен

Ответ 3

Как я уже говорил, вы использовали "sudo" для установки Ansible, я полагаю, что будет нормально продолжать использовать "sudo" для установки с помощью галактики. И это то, что я только что сделал.