2016-03-23 8 views
0

Ich provisioning eine neue Vagrant-Box für Ruby on Rails Entwicklung (mit VirtualBox) und möchte RVM + Ruby 2.3.0 als Teil des Vagrant Provisioning-Prozesses hinzufügen.Wie installiere ich RVM über Vagrant und Puppet

Mein Vagrantfile:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    config.vm.box = "ubuntu/trusty64" 

    config.vm.network "forwarded_port", guest: 3000, host: 3000 

    config.vm.provision :puppet do |puppet| 
    puppet.manifests_path = "puppet/manifests" 
    puppet.module_path = "puppet/modules" 
    puppet.manifest_file = "development.pp" 
    end 

end 

Und puppet/Manifeste/development.pp:

class requirements { 
    group { "puppet": ensure => "present", } 
    exec { "apt-update": 
    command => "/usr/bin/apt-get -y update" 
    } 

    package { 
    ["mysql-client", "mysql-server", "libmysqlclient-dev"]: 
     ensure => installed, require => Exec['apt-update'] 
    } 
} 

include requirements 

Das installiert nur mysql im Moment. Ich würde gerne hinzufügen RVM + installieren Sie einen Standard-Ruby (2.3.0 zum Beispiel).

Es ist dieser Leitfaden: http://blog.csanchez.org/2014/01/14/installing-rvm-and-multiple-ruby-versions-with-puppet/

Welche dieses Puppen Modul verwendet: https://forge.puppetlabs.com/maestrodev/rvm

ich nicht Marionette installiert haben, weil, wenn ich versuche zu laufen:

puppet module install maestrodev-rvm 

I bekomme "-bash: puppet: Befehl nicht gefunden".

Wenn Sie sich die Puppet-Dokumente ansehen, scheint es ziemlich kompliziert zu sein, einen Puppet-Client/Server zu installieren/einzurichten. Das scheint übertrieben zu sein, nur um das RVM Puppenmodul zu benutzen. Außerdem werden Designer im Team diesen Prozess verwenden, so dass er so einfach wie möglich sein muss.

Jede Hilfe würde sehr geschätzt werden.

Antwort

2

Ich habe keine Marionette

installiert

Ja, Sie - Marionette auf Ihrer VM installiert ist, sonst würden Sie nicht die Bereitstellung von MySQL und andere in der Lage sein.

Sie führen wahrscheinlich den Befehl puppet module install maestrodev-rvm von Ihrem Host aus, während dies auf der VM ausgeführt werden muss.

Es gibt verschiedene Möglichkeiten, wie Leute die Module auf der VM einrichten (Bibliothekar, einige Downloads alle in Modul/Ordner ...), was ich mache, ist eine Shell-Provisionierung, die alle notwendigen Module installiert. In Ihrem vagrantfile hinzufügen

config.vm.provision "shell", path: "puppet/script/install-puppet-modules.sh" 

sicher machen diese Linie vor Ihrer Puppe Bestimmung ist - die install-puppet-modules.sh so etwas wie

#!/bin/bash 

mkdir -p /etc/puppet/modules; 

if [ ! -d /etc/puppet/modules/maestrodev/rvm ]; then 
    puppet module install maestrodev-rvm --version xxx 
fi 

sein Ich mag einen Punkt auf die Version machen Wenn also eine neue Version des Moduls in der Schmiede ist, könnte es kaputt gehen, zumindest weiß ich, dass Version xxx getestet wurde.

So, jetzt sind Sie in der Lage class { 'rvm': } hinzufügen und so weiter rvm und Rubin in Ihrer puppet/manifests/development.pp-Datei zu installieren