Я установил 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-пакет.