2016-03-23 71 views
0

我为Ruby on Rails开发(使用VirtualBox)提供了一个新的Vagrant框,并且希望将RVM + ruby​​ 2.3.0作为Vagrant配置过程的一部分添加。如何通过Vagrant和Puppet安装RVM

我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 

伪军/舱单/ 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 

这只是目前安装的MySQL。我想添加RVM +安装一个默认的ruby(例如2.3.0)。

有了这个指南: http://blog.csanchez.org/2014/01/14/installing-rvm-and-multiple-ruby-versions-with-puppet/

使用这个木偶模块: https://forge.puppetlabs.com/maestrodev/rvm

我没有安装傀儡,因为当我尝试运行:

puppet module install maestrodev-rvm 

我得到“-bash:puppet:command not found”。

通过Puppet文档查看,安装/设置Puppet客户端/服务器似乎相当复杂。这似乎只是为了使用RVM puppet模块。此外,团队中的设计师将使用这个过程,因此它需要尽可能简单。

任何帮助将不胜感激。

回答

2

我没有木偶安装

是的,你做的 - 木偶安装在你的虚拟机,否则你就无法提供MySQL和其他。

您可能需要在主机上运行命令puppet module install maestrodev-rvm,而这需要在虚拟机上运行。

有不同的方式人们如何对VM模块设置(库,一些下载的所有模块/文件夹...)我要做的就是创建一个shell配置,这将安装所有必要的模块。 在你vagrantfile添加

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

确保此行是你的傀儡拨备前 - 在install-puppet-modules.sh会像

#!/bin/bash 

mkdir -p /etc/puppet/modules; 

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

我想做出点版本所以如果在伪造中有一个新版本的模块它可能会中断,至少我知道版本xxx已经过测试。

所以,现在你可以添加class { 'rvm': }等安装RVM和红宝石在puppet/manifests/development.pp文件