Установка Ruby 1.9.2 в Ubuntu с использованием Chef и Vagrant - PullRequest
8 голосов
/ 22 октября 2011

Я хотел бы предоставить новую коробку Ubuntu 10.04 с Ruby 1.9.2. Я использую Vagrant и Chef Solo для обеспечения коробки всем остальным, что мне нужно (например, Rails, Rake, MongoDB). Версия Ruby по умолчанию - 1.8.7.

Есть ли способ установить Ruby 1.9.2 как часть процесса обеспечения Vagrant / Chef?

Я читал на веб-сайте Chef об использовании моего собственного шаблона начальной загрузки - возможно, с ножом - такого как этот , но, поскольку я использую Vagrant, я не уверен, куда поместить этот шаблон - У меня нет chef-репо, каталога .chef или даже каких-либо вещей Chef, установленных в /etc/chef.

Ответы [ 3 ]

11 голосов
/ 22 октября 2011

Сначала немного контекста. Большинство базовых пакетов Vagrant устанавливают Ruby для использования Chef и Puppet, но самые последние делают это в / opt / ruby, а не в системных пакетах. Они также добавляют / opt / ruby ​​/ bin к пути, но в конце.

Этот шаблон VeeWee показывает, как в настоящий момент построен блок 10.04: https://github.com/jedi4ever/veewee/blob/master/templates/ubuntu-10.04.3-server-i386/postinstall.sh

Что касается вашего вопроса, это несколько разных контекстов, к которым вы, возможно, пытаетесь обратиться, каждый из которых имеет свое решение. Надеюсь, один из них будет тем, что вы ищете.

Запустить рецепты шеф-повара с 1.9.2

Возможно, вы захотите проверить работу рецептов Chef под 1.9.2, и вам не нужно 1.8.7 где-нибудь рядом с вашим боксом. Лучший способ достичь этого - создать собственный шаблон VeeWee и создать новую базовую версию. Вы можете изменить ссылку выше, чтобы скомпилировать 1.9.2 вместо 1.8.7 и следовать инструкциям на https://github.com/jedi4ever/veewee

Разработка с Ruby 1.9.2

Вероятно, более вероятно, что вы захотите взломать какой-нибудь код Ruby с помощью 1.9.2. Для этого вам просто нужно установить Ruby и иметь двоичные файлы на вашем пути перед записью / opt / ruby. Есть несколько способов сделать это:

  • Соберите Ruby с нуля самостоятельно
  • Используйте пакет. Пакеты apt в lucid не дадут вам 1.9.2, так что вы можете свернуть свои собственные, если хотите. Или вот тот, который я сейчас использую https://github.com/garethr/packages/downloads
  • Используйте что-то вроде RVM http://beginrescueend.com/

Всем этим можно управлять по рецепту шеф-повара. Вероятно, я бы не стал использовать опцию компиляции, оставив либо простой ресурс для загрузки и упаковки, либо следующую поваренную книгу RVM, которая может пригодиться http://community.opscode.com/cookbooks/rvm для RVM.

Параметр * gem_binary * в ресурсе пакета также может быть полезен здесь в зависимости от того, как вы хотите убедиться, что гемы установлены для вашего нового 1.9.2 Ruby (вместо 1.8.7 в opt)

Цель knife bootstrap - установить Chef в целевой системе, чтобы он мог запускать Chef Client. Базовые блоки Vagrant, как правило, уже имеют установленный Chef, поэтому, если вы не делаете что-то конкретное и хотите запустить несколько версий Chef, я бы избежал этого пути. Лучше всего встроенные провайдеры, такие как http://vagrantup.com/docs/provisioners/chef_solo.html.

2 голосов
/ 20 мая 2012

Я знаю, что вопрос довольно старый и уже ответил, но я надеюсь, что это все еще может быть интересно для того, кто наткнулся на этот вопрос.

Я построил Githubrepo , который намеревается предоставить несколько конфигураций для создания и подготовки Vagrant box без необходимости писать рецепт обеспечения с нуля .

Например, используяВ настоящее время предоставляется конфигурация, которую вы можете собрать и подготовить для:* MongoDB

Вот вступительная статья в моем блоге.

Поскольку это почти соответствует запросу, я чувствовал, что стоит добавить это поздноответ:)

0 голосов
/ 24 октября 2011

Вот рецепт, который я использую для установки Ruby 1.9.2

package "libffi5" do
  action :install
  provider Chef::Provider::Package::Apt
end

package "ruby-1.9.2" do
  action :install
  source "/tmp/vagrant-chef/cookbooks-0/ruby-1.9.2/files/default/ruby-1.9.2-p290_i386.deb"
  provider Chef::Provider::Package::Dpkg
end
...