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.
Meine Vagrant-Datei:
# -*- 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 Puppe / Manifeste / Entwicklung.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
Dies installiert gerade mysql im Moment. Ich würde gern RVM + hinzufügen und einen Standard-Ruby installieren (zB 2.3.0).
Es gibt diesen Leitfaden: http://blog.csanchez.org/2014/01/14/installing-rvm-and-multiple-ruby-versions-with-puppet/
Welches benutzt dieses Puppenmodul: https://forge.puppetlabs.com/maestrodev/rvm
Ich habe keine Puppe installiert, denn wenn ich versuche zu rennen:
puppet module install maestrodev-rvm
Ich bekomme "-bash: puppet: command not found".
Wenn man durch die Puppet-Dokumente sieht, erscheint esziemlich kompliziert, 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.
Antworten:
2 für die Antwort № 1Ich habe keine Puppe installiert
Ja, Sie tun - Puppet ist auf Ihrer VM installiert, sonst könnten Sie MySQL und andere nicht bereitstellen.
Sie führen wahrscheinlich den Befehl aus puppet module install maestrodev-rvm
von Ihrem Host, während dies auf der VM ausgeführt werden muss.
Es gibt verschiedene Möglichkeiten, wie Menschen das habenModule auf der VM eingerichtet (Bibliothekar, einige Downloads alle in Modul / Ordner ...), was ich tun, ist eine Shell-Provisioning, die alle notwendigen Module installieren wird. In deiner Vagrantdatei hinzufügen
config.vm.provision "shell", path: "puppet/script/install-puppet-modules.sh"
vergewissere dich, dass diese Zeile vor deiner Marionettenbereitstellung steht - die install-puppet-modules.sh wird sowas sein
#!/bin/bash
mkdir -p /etc/puppet/modules;
if [ ! -d /etc/puppet/modules/maestrodev/rvm ]; then
puppet module install maestrodev-rvm --version xxx
fi
Ich möchte gerne auf die Version hinweisen. Wenn es eine neue Version des Moduls in der Schmiede gibt, kann es zumindest kaputt gehen, zumindest weiß ich, dass Version xxx getestet wurde.
So können Sie jetzt hinzufügen class { "rvm": }
und so weiter, um rvm und ruby in deinem zu installieren puppet/manifests/development.pp
Datei