2016-11-30 3 views
1

У меня есть узел Red Hat Enterprise Linux Server 6.7, который я загрузил с помощью CHEF. Я успешно выполнил несколько кулинарных книг/рецептов на этом узле. Теперь мне нужно настроить этот узел для запуска приложений Ruby On Rails.RVM Ruby Install Breaks Chef-Client на загрузочном узле

У меня есть поваренная книга с рецептами, которые успешно ::

  1. устанавливающее RVM
  2. устанавливает Рубин v2.2

Проблема

После РВМ устанавливающее Ruby, CHEF-Client на загрузочный кивок e больше не работает. Независимо от того, какого Cookbook/Рецепта (ы) я пытаюсь запустить, я получаю следующий результат ::

PS C:\Users\JW031544\workspace\CHEF\chef-repo> knife ssh dh2vrtooldev01 "chef-client -o recipe[MY_COOKBOOK::default]" --manual-list --ssh-user MY_USER --ssh-password "MY_PASS" 

dh2vrtooldev01 Ignoring executable-hooks-1.3.2 because its extensions are not built. Try: gem pristine executable-hooks --version 1.3.2 
dh2vrtooldev01 Ignoring gem-wrappers-1.2.7 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.2.7 
dh2vrtooldev01 Ignoring nokogiri-1.6.8.1 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.8.1 
dh2vrtooldev01 /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/dependency.rb:308:in `to_specs': Could not find 'addressable' (= 2.4.0) among 45 total gem(s) (Gem::MissingSpecError) 
dh2vrtooldev01 Checked in 'GEM_PATH=/usr/local/rvm/gems/ruby-2.2.4:/usr/local/rvm/gems/[email protected]', execute `gem env` for more information 
dh2vrtooldev01 from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/dependency.rb:320:in `to_spec' 
dh2vrtooldev01 from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_gem.rb:65:in `gem' 
dh2vrtooldev01 from /usr/bin/chef-client:4:in `<main>' 

Если я иду на узел и сказать RVM, чтобы удалить эту версию Ruby, то CHEF-клиент начать работать снова просто отлично.


Вопрос

Кто-нибудь есть какие-либо идеи, почему CHEF-клиент вдруг забывает, как запустить один раз РВМ устанавливает версию Ruby?


Исходный код

(default.rb)

include_recipe 'abl_rails::rvm_install' 
include_recipe 'abl_rails::ruby_install' 

(rvm_install.rb)

# Install RVM (if it doesn't already exist) 
execute 'install_rvm' do 
    cwd '/root/' 
    command 'curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -; curl -L get.rvm.io | bash -s stable' 
    not_if {::File.exists?('/etc/profile.d/rvm.sh')} 
end 

(ruby_install.rb)

# Install Ruby 
bash 'install_ruby' do 
    cwd '/root/' 
    code <<-EOH 
    source /etc/profile.d/rvm.sh; 
    rvm install #{node['ruby_version']}; 
    EOH 
    not_if "source /etc/profile.d/rvm.sh; ruby --version | grep #{node['ruby_version']}", :cwd => '/root' 
    notifies :run, "bash[set_default_rvm_ruby]", :immediately 
end 

# Set the default Ruby version in RVM 
bash "set_default_rvm_ruby" do 
    cwd '/root' 
    code <<-EOH 
    source /etc/profile.d/rvm.sh; 
    rvm use #{node['ruby_version']} --default; 
    EOH 
    action :run 
end 

ответ

2

rvm перекрывает внутреннюю функцию cd с пользовательской функцией, и что вызывает ошибку. Попробуйте удалить rvm и использовать другой менеджер рубина, такой как rbenv.

Проверить этот блог для других различий между rvm и rbenv: http://jonathan-jackson.net/rvm-and-rbenv

Я буду честен, я была такая же проблема до (но не с шеф-поваром), читать немного больше о rvm и решил, что ему не был подходящим инструментом для меня. Я уверен, что должен быть способ сделать игру rvm красиво, но я решил, что это не стоит усилий.

+0

Благодарим за рекомендацию @augusto Я закончил удаление RVM и перешел с RBENV. Теперь я могу установить Ruby, не убивая моего CHEF-клиента. – Chiefwarpaint

0

Это может быть исправлено в chef-client 12.17.х, так что повар-клиент правильно вспыхнет среды РВМ:

Связанные Chef ошибки:

https://github.com/chef/appbundler/pull/24

https://github.com/chef/chef/issues/5589

Если он все еще сломана после 12.17.x (когда ::Gem.clear_paths существует/opt/chef/bin/chef-client appbundler binstub), то новая проблема должна быть отключена от appbundler.

(В качестве пользователя RVM я бы не рекомендовал использовать его для запуска производственных служб, но мне очень приятно использовать его в среде рабочей среды dev, но YMMV).

Смежные вопросы