Роль неработающей галактики терпит неудачу с "не имеют разрешения на изменение /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
Ожидается ли это или моя установка как-то не так?
Ответы
Ответ 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" для установки с помощью галактики. И это то, что я только что сделал.