омнибус установил шеф-повара и проблемы с rvm

омнибус установил шеф-повара и проблемы с rvm

Я пытаюсь разобраться в одной вещи и хотел бы узнать мнение кого-то еще. Я установил chef на свой сервер Ubuntu (11.10) через awesomeустановка омнибуса. Он работал отлично. Я смог запустить chef-client, и он работал без каких-либо проблем.

Затем я установил RVM и два ruby ​​- и вот тогда у меня начались проблемы. Сразу после этого я установил RVM для всей системы, т.е. запустив:

curl -L https://get.rvm.io | sudo bash -s stable

И установил 2 рубина (установив один из рубинов как рубин по умолчанию в системе) Я больше не мог запустить chef-client - я получал сообщение "команда не найдена" при запуске от имени обычного пользователя - я думал, что RVM портит некоторые ПУТИ, так что это было причиной. Я думал, что запущу его как root, то есть:

sudo su -
chef-client

тот же результат. Затем я попробовал rvmsudo, как предлагают некоторые люди, но это тоже не помогло. Затем я сделал последний шаг - запустил его как

sudo chef-client

И это отлично работает! Я действительно озадачен, почему вышесказанное работает и почему запуск chef -client от имени root (т. е. sudo su -; chef-client) НЕ работает. Я что-то упускаю? Я был бы очень признателен за все подсказки или объяснения, так как я немного запутался. Я хотел бы запустить chef-client как демон от имени root, но я не могу этого сделать с помощью команды sudo выше - я знаю, что могу задать пользователя с nopasswd, и это, вероятно, сработает, но я действительно хотел бы понять, что здесь происходит ;)

решение1

Похоже, у вас возникла проблема с загрузкой пути.

Установщик Omnibus устанавливает Chef /opt/chef/bin/chef-clientи затем создает символические ссылки на/usr/bin/chef-client ссылка1чтобы он был доступен всем пользователям в $PATH.

В тот момент, когда вы устанавливаете rvm, он начнет вмешиваться в работу $PATH, в частности, в то, какой Ruby должен использоваться Chef, поскольку онзагрузка Ruby текущего работающего окруженияпри выполнении.

При запуске с помощью sudo su -вы переходите в rootсреду и запускаете все связанные загрузчики profile/bashrc/bash_profile, которые настраивают среду пользователя.

При запуске с помощью sudoвы не загружаете всю среду, поэтому RVM не будет менять пути.

Другой тест, который вы можете выполнить, чтобы увидеть влияние различий в оболочках, — это запустить:

sudo which ruby
sudo su - which ruby

И сравните различия.

Возможно, вам захочется взглянуть нашеф-повар-клиентCookbook, который после запуска поможет вам настроить демон службы для управления/конфигурирования службы chef-client (мы используем ее на всех наших серверах).

Поскольку rvm установлен по умолчанию для всей системы, вам, возможно, придется отключить его для root (или пользователя, от имени которого вы хотите запустить Chef, но я бы рекомендовал root).

Связанный контент