2011-10-22 17 views
8

Vorrei installare una nuova scatola Ubuntu 10.04 con Ruby 1.9.2. Sto usando Vagrant e Chef Solo per fornire la scatola con tutto il resto che mi serve (ad esempio Rails, Rake, MongoDB). La versione predefinita di Ruby è 1.8.7.Installazione di Ruby 1.9.2 su Ubuntu usando Chef e Vagrant

C'è un modo per installare Ruby 1.9.2 come parte del processo di provisioning Vagrant/Chef?

Ho letto sul sito Web di Chef sull'utilizzo del mio modello di bootstrap - possibilmente con un coltello - come ad esempio this one, ma poiché sto usando Vagrant non sono sicuro dove mettere questo modello - Non ho uno chef-repo, una directory .chef o anche qualsiasi roba di Chef installata in/etc/chef.

risposta

11

In primo luogo, un po 'di contesto. La maggior parte delle Basebox di Vagrant installa Ruby per essere utilizzata da Chef e Puppet, ma le ultime lo fanno in/opt/ruby ​​piuttosto che usare i pacchetti di sistema. Aggiungono anche/opt/ruby ​​/ bin al percorso, ma alla fine.

Questo modello VeeWee mostra come la scatola 10.04 è attualmente in costruzione: https://github.com/jedi4ever/veewee/blob/master/templates/ubuntu-10.04.3-server-i386/postinstall.sh

Per quanto riguarda la tua domanda, loro sono molti contesti differenti si potrebbe essere cercando di affrontare, ognuno con una soluzione diversa. Speriamo che uno di questi sia quello che stai cercando.

ricette Run Chef con 1.9.2

È mancasse per testare l'esecuzione ricette Chef sotto 1.9.2 e non volete 1.8.7 nessuna parte vicino la vostra casella. Il modo migliore per affrontarlo è creare il tuo modello VeeWee e costruirti una nuova basebox. Si potrebbe modificare quella legata sopra per compilare 1.9.2 invece di 1.8.7 e seguire le istruzioni sul https://github.com/jedi4ever/veewee

Sviluppare con Ruby 1.9.2

Probabilmente più probabile è che si vuole incidere su alcuni Ruby code usando 1.9.2. Per questo è sufficiente installare Ruby e disporre dei file binari sul percorso prima della voce/opt/ruby. Ci sono diversi modi per farlo:

Tutti questi potevano essere gestiti utilizzando una ricetta Chef. Probabilmente non opterei per l'opzione di compilazione, lasciando solo un download diretto e una risorsa pacchetto o il seguente ricettario RVM potrebbe essere utile http://community.opscode.com/cookbooks/rvm per RVM.

L'* * gem_binary opzione sulla risorsa pacchetto potrebbe essere utile anche qui a seconda di come si vuole garantire gemme vengono installati per la nuova 1.9.2 Rubino (piuttosto che la 1.8.7 in opt)

Il obiettivo di knife bootstrap è quello di far installare Chef sul sistema di destinazione in modo che possa eseguire Chef Client. Le basi di Vagrant tendono ad avere già installato Chef quindi, a meno che tu non stia facendo qualcosa di specifico e desideri eseguire più versioni di Chef, eviterei questo percorso. I pensionati di Chef costruiti come http://vagrantup.com/docs/provisioners/chef_solo.html sono una scommessa migliore.

+0

sono andato per l'opzione pacchetto, utilizzando il pacchetto 1.9.2 si è collegato al, anche se mi sembrava di manca una dipendenza (libffi5) quindi ho dovuto aggiungerlo anche alla mia ricetta. –

0

Ecco la ricetta che sto usando per installare 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

So che la questione è piuttosto vecchio e già risposto, ma spero che questo ancora può essere interessante per qualcuno inciampare su questa domanda .

Ho costruito un Github repo che intende fornire diverse configurazioni per la costruzione e il provisioning di una scatola di Vagrant senza la necessità di scrivere una ricetta di provisioning da zero.

Per esempio, utilizzando la configurazione attualmente previsto, si può costruire e la fornitura di una scatola con:

  • di Ruby 1.9.2-P290, gestito con rbenv e utilizzando Bundler per le gemme
  • PostgreSQL 8.4
  • MongoDB

Ecco uno introduction article sul mio blog.

Dal momento che questo quasi abbinare la richiesta, ho sentito che era la pena di aggiungere questa risposta tardiva :)

Problemi correlati