2011-10-22 2 views
8

Je voudrais provisionner une nouvelle boîte Ubuntu 10.04 avec Ruby 1.9.2. J'utilise Vagrant et Chef Solo pour provisionner la boîte avec tout ce dont j'ai besoin (par exemple, Rails, Rake, MongoDB). La version par défaut de Ruby est 1.8.7.Installation de Ruby 1.9.2 sur Ubuntu en utilisant Chef et Vagrant

Existe-t-il un moyen d'installer Ruby 1.9.2 dans le cadre du processus d'approvisionnement Vagrant/Chef? J'ai lu sur le site Web du Chef sur l'utilisation de mon propre modèle de bootstrap - éventuellement avec un couteau - comme this one, mais parce que j'utilise Vagrant je ne sais pas où mettre ce modèle - je n'ai pas un chef-repo, un répertoire .chef ou même n'importe quel truc de Chef installé dans/etc/chef.

Répondre

11

D'abord, un peu de contexte. La plupart des boîtes de base Vagrant installent Ruby pour utilisation par Chef et Puppet, mais les plus récentes font cela dans/opt/ruby ​​plutôt que d'utiliser les paquets système. Ils ajoutent également/opt/ruby ​​/ bin au chemin, mais à la fin.

Ce modèle VeeWee montre comment la boîte 10,04 est actuellement construite: https://github.com/jedi4ever/veewee/blob/master/templates/ubuntu-10.04.3-server-i386/postinstall.sh

Quant à votre question, leur sont plusieurs contextes différents que vous pourriez essayer de répondre, chacun avec une autre solution. J'espère que l'un d'eux sera ce que vous cherchez.

Run recettes Chef avec 1.9.2

Vous manquât à tester en cours d'exécution des recettes de chef en 1.9.2 et vous ne voulez pas 1.8.7 à proximité de votre boîte. La meilleure façon d'aborder cela serait de créer votre propre template VeeWee et de créer vous-même une nouvelle basebox. Vous pouvez modifier celle liée ci-dessus pour compiler 1.9.2 au lieu de 1.8.7 et suivez les instructions sur https://github.com/jedi4ever/veewee

Développer avec Ruby 1.9.2

Probablement est plus probable que vous voulez pirater sur certains Ruby code en utilisant 1.9.2. Pour cela, il vous suffit d'installer Ruby et d'avoir les binaires sur votre chemin avant l'entrée/opt/ruby. Il y a plusieurs façons de le faire:

Tous ces facteurs peuvent être gérés en utilisant une recette Chef. Je n'irais probablement pas pour l'option de compilation, laissant soit juste un téléchargement direct et une ressource de paquetage, soit le livre de recettes RVM suivant pourrait être pratique http://community.opscode.com/cookbooks/rvm pour RVM.

Le * gem_binary * option sur la ressource de package peut également être utile ici en fonction de la façon dont vous voulez vous assurer que les pierres précieuses sont installées pour votre nouveau Ruby 1.9.2 (plutôt que la 1.8.7 en opt)

Le L'objectif de knife bootstrap est d'installer Chef sur le système cible afin qu'il puisse exécuter Chef Client. Les boîtes de base Vagrant ont déjà installé Chef, donc à moins que vous ne fassiez quelque chose de spécifique et que vous vouliez exécuter plusieurs versions de Chef, j'éviterais cette route. Les provisionneurs de chef intégrés comme http://vagrantup.com/docs/provisioners/chef_solo.html sont un meilleur pari.

+0

je suis allé pour l'option de package, en utilisant le package 1.9.2 vous avez lié, bien que je semblais manque une dépendance (libffi5) donc j'ai dû ajouter ça à ma recette aussi. –

0

est ici la recette que je utilise pour installer 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 
2

Je sais que la question est assez vieux et déjà répondu, mais j'espère que cela peut encore être intéressant pour quelqu'un trébucher sur cette question .

J'ai construit un Github repo qui a l'intention de fournir plusieurs configurations pour la construction et l'approvisionnement d'une boîte Vagrant sans qu'il soit nécessaire d'écrire une recette de provisionnement à partir de zéro.

Par exemple, en utilisant la configuration actuellement fourni, vous pouvez construire et fournir une boîte avec:

  • Ruby 1.9.2-p290, géré avec rbenv et en utilisant des pierres précieuses Bundler
  • PostgreSQL 8.4
  • MongoDB

Voici un introduction article sur mon blog.

Depuis ce match presque la demande, il m'a semblé utile d'ajouter cette réponse tardive :)

Questions connexes