Назад | Перейти на главную страницу

Как заставить Chef-Server использовать Ruby 1.9 в Ubuntu?

Я установил Chef Server на Ubuntu 12.04, используя официальные инструкции, который использует «омнибусный установщик» со встроенным Ruby 1.8.7.

Я пытаюсь установить ножницы, но когда я бегу gem install knife-windows Я получаю такую ​​ошибку:

ERROR:  Error installing knife-windows:
        gssapi requires Ruby version >= 1.9.1.

Я пробовал установить RVM и 1.9.3, но я получил эту ошибку и отступил:

/opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:900:in `report_activate_error': Could not find RubyGem chef (>= 0) (Gem::LoadError)
    from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate'
    from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:1276:in `gem'
    from /opt/vagrant_ruby/bin/knife:18

Как правильно установить Chef server & knife с Ruby 1.9.x?

Похоже, что Chef Server установлен на виртуальную машину, созданную Vagrant (/opt/vagrant_ruby). Однако Chef Server 11+ построен на Erlang, а не на Ruby. Он поставляется с Ruby, но вам не следует использовать его напрямую. Он предназначен для управления Chef Server с помощью chef-server-ctl.

Установка в поле Vagrant выше, вероятно, помещает различные двоичные файлы Ruby в значение по умолчанию $ PATH, что означает, что использование gem install попытается установить knife-windows драгоценный камень в Рубин, помещенный туда Бродягой.

Для дальнейшего объяснения, пакеты, которые Opscode предоставляет для Chef и Chef Server, включают отдельную установку Ruby. Opscode делает это, потому что все поддерживаемые платформы для Chef и Chef Server имеют разные (устаревшие) версии Ruby, предоставляемые по умолчанию.

Изо дня в день большая часть взаимодействия с Chef Server будет осуществляться через API с использованием knife (или вебуи). knife и его плагины должны использоваться с "рабочей станции", например, с локального ноутбука. Если Chef - единственная причина для установки Ruby, используйте Ruby, встроенный в Пакет от шеф-повара, который должен быть установлен в локальной системе. Установщики доступны для большинства основных платформ, включая Ubuntu, Windows, OS X и другие. В зависимости от плагинов могут потребоваться различные заголовки разработки и инструменты сборки (gcc, make и т. Д.).

Как бы то ни было, версия Ruby в текущем «омнибусе» для Chef Server не 1.8.7. Его можно найти по адресу:

ubuntu@os-9348884648703137:~$ /opt/chef-server/embedded/bin/ruby --version
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]

(текущая версия на момент написания)

Версия Ruby, используемая в клиентском пакете Chef, обычно обновляется чаще, так как потребности клиента / рабочей станции меняются быстрее, чем Chef Server. Встроенная версия Ruby в клиентском пакете Chef:

% /opt/chef/embedded/bin/ruby --version
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin11.2.0]

Opscode планирует обновить эту версию в следующем выпуске, поэтому она может отличаться от той, которая отображается для будущих посетителей этого сайта. Также обратите внимание, что это произошло из-за установки «локальной рабочей станции», а не из Chef Server.

Было бы неудобно использовать RVM для установки 1.9.3 для chef-сервера.

Я бы установил 1.9.3 из, скажем, Brightbox PPA (вот подробные инструкции, но он в основном добавляет этот PPA и заменяет 1.8 на 1.9, т.е. sudo apt-get install ruby1.9.3.

После того, как 1.9.3 и связанный с ним RubyGem установлены, его должно быть достаточно для запуска gem install chef, так что chef-server устанавливается как гем, а не как deb-пакет.