Разрешение Ansible отклонено при попытке установить/проверить гем

Недавно я решил переключить свое развертывание Ansible на установку Ruby через rbenv, а не из apt-get через ruby1.9.1. Теперь я получаю сообщение об ошибке при попытке установить гем через Ansible.

TASK: [nginx | s3cp gem] ****************************************************** 
failed: [staging.myapp.com] => {"cmd": ["/usr/local/bin", "query", "-n", "^s3cp$"], "failed": true, "item": "", "rc": 13}
msg: [Errno 13] Permission denied

FATAL: all hosts have already failed -- aborting

Запись Ansible playbook для этой команды:

- name: s3cp gem
  gem: name=s3cp state=present executable=/usr/local/bin

У меня sudo установлено на "yes" в вызове более высокого уровня для этой части playbook. Так что я не уверен, почему он спотыкается. Я также могу войти в систему с тем же пользователем, который используется для Ansible, и перейти в этот каталог, а также установить этот гем.

Он работал нормально, когда я использовал apt-get для установки ruby1.9.1. Любые идеи?

Кстати, это развернуто на сервере Ubuntu 13.04.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Видимо дело не только в s3cp. Я пропустил это и перешел к другой команде для установки бандлера. Эта команда также не сработает (сбой точно так же). Мне интересно, существует ли рубин по умолчанию, конфликтующий с рубином rbenv (хотя which ruby при входе по ssh дает ожидаемый каталог rbenv).

БОЛЬШЕ-БОЛЬШЕ ИНФОРМАЦИИ:

Вместо этого я попытался установить ruby ​​​​через rvm. У меня была такая же ошибка. :(


person Neal    schedule 27.12.2013    source источник
comment
вы нашли какое-нибудь решение?   -  person Montells    schedule 24.09.2014


Ответы (2)


Что происходит, когда вы запускаете ansible с параметром -vvvv? Он должен предоставить полный подробный вывод задач, возможно, включая все обнаруженные ошибки. Если повезет, он покажет вам, в чем проблема.

Еще одна вещь, которую нужно проверить, — это то, от имени какого пользователя вы запускаете задачи. Как вы установили следующие параметры в верхней части вашей игры (или вы не указываете ни один из них)?

- hosts: myhosts
  user: someuser
  sudo: True
  sudo_user: another_user
person Bruce P    schedule 16.01.2014

Насколько мне известно, модуль gem ansible не поддерживает rbenv. Это означает, что когда вы вызываете модуль gem, он попытается установить гем в масштабе всей системы. Это, конечно, потерпит неудачу, если вы не действуете как root на своем узле.

Чтобы установить драгоценный камень с помощью rbenv, вы должны использовать прокладку драгоценного камня rbenv. Единственный способ сделать это — запустить rbenv init, отправив команду через bash:

- name: Install Bundler
  command: bash -lc "gem install bundler"

Это уже обсуждалось здесь: Установите gem Bundler с помощью Ansible

person leucos    schedule 04.03.2014