2011-10-22 16 views
8

Me gustaría aprovisionar una nueva caja Ubuntu 10.04 con Ruby 1.9.2. Estoy usando Vagrant y Chef Solo para aprovisionar la caja con todo lo demás que necesito (por ejemplo, Rails, Rake, MongoDB). La versión predeterminada de Ruby es 1.8.7.Instalación de Ruby 1.9.2 en Ubuntu usando Chef y Vagrant

¿Hay alguna forma de instalar Ruby 1.9.2 como parte del proceso de aprovisionamiento de Vagrant/Chef?

He leído en el sitio web del Chef sobre el uso de mi propia plantilla de bootstrap, posiblemente con cuchillo, como this one, pero como estoy usando Vagrant no estoy seguro de dónde poner esta plantilla, no tengo un chef-repo, un directorio .chef o incluso cualquier cosa de Chef instalada en/etc/chef.

Respuesta

11

Primero, un poco de contexto. La mayoría de las cajas base Vagrant instalan Ruby para que las use Chef y Puppet, pero las últimas hacen esto en/opt/ruby ​​en lugar de usar los paquetes del sistema. También agregan/opt/ruby ​​/ bin a la ruta, pero al final.

Esta plantilla VeeWee muestra cómo el cuadro 10.04 se construye actualmente: https://github.com/jedi4ever/veewee/blob/master/templates/ubuntu-10.04.3-server-i386/postinstall.sh

cuanto a su pregunta, su son varios contextos diferentes que podrían estar tratando de hacer frente, cada uno con una solución diferente. Con suerte, uno de estos será lo que estás buscando.

recetas del cocinero con Run 1.9.2

Se podrían no ser suficientes para probar las recetas del cocinero corriendo bajo 1.9.2 y 1.8.7 no quieren cualquier lugar cerca de su caja. La mejor forma de acercarte a esto sería crear tu propia plantilla de VeeWee y crearte una nueva basebox. Se podría modificar el uno vinculado anteriormente para compilar 1.9.2 en lugar de 1.8.7 y siga las instrucciones que aparecen en https://github.com/jedi4ever/veewee

Desarrollar con Ruby 1.9.2

Probablemente más probable es que se desea cortar en algunas Código Ruby usando 1.9.2. Para esto, solo necesita instalar Ruby y tener los binarios en su ruta antes de la entrada/opt/ruby. Hay varias maneras de hacer esto:

Todos estos pueden ser administradas usando una receta de cocina. Probablemente no vaya por la opción de compilación, dejando solo una descarga directa y el recurso del paquete o el siguiente libro de cocina RVM podría ser útil http://community.opscode.com/cookbooks/rvm para RVM.

El gem_binary * * opción en el recurso paquete también podría ser útil en este caso en función de cómo desea asegurarse de gemas se instalan para su nuevo 1.9.2 Ruby (en lugar de la 1.8.7 en opt)

El El objetivo de knife bootstrap es instalar Chef en el sistema de destino para que pueda ejecutar Chef Client. Las cajas base Vagrant tienden a tener instalado Chef, así que, a menos que estés haciendo algo específico y quieras ejecutar varias versiones de Chef, evitaría esta ruta. Los proveedores de Cocinas integrados como http://vagrantup.com/docs/provisioners/chef_solo.html son una mejor opción.

+0

he ido para la opción de paquete, utilizando el paquete 1.9.2 se ha vinculado a, a pesar de que parecía Me falta una dependencia (libffi5) así que tuve que agregar eso a mi receta también. –

0

Aquí está la receta que estoy usando para instalar Rubí 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 
2

Sé que la pregunta es bastante viejo y ya ha respondido, pero espero que esto todavía puede ser interesante para alguien tropezar con esta pregunta .

He construido una Github repo que pretende proporcionar varias configuraciones para la construcción y aprovisionamiento de una caja de Vagrant sin necesidad de escribir una receta de aprovisionamiento desde cero.

Por ejemplo, utilizando la configuración proporcionada Actualmente, se puede construir y la provisión de una caja con:

  • de Ruby 1.9.2-p290, administradas con rbenv y el uso de gemas Bündler
  • PostgreSQL 8.4
  • MongoDB

Aquí hay un introduction article en mi blog.

Dado que este casi coincide con la petición, me parece que vale la adición de esta respuesta tardía :)

Cuestiones relacionadas