With the latest version of the Puppet RVM module it is even easier to install multiple versions of Ruby
# install rubies from binaries
Rvm_system_ruby {
ensure => present,
build_opts => ['--binary'],
}
# ensure rvm doesn't timeout finding binary rubies
# the umask line is the default content when installing rvm if file does not exist
file { '/etc/rvmrc':
content => 'umask u=rwx,g=rwx,o=rx
export rvm_max_time_flag=20',
mode => '0664',
before => Class['rvm'],
}
class { 'rvm': }
rvm::system_user { 'vagrant': }
rvm_system_ruby {
'ruby-1.9.3':
default_use => true;
'ruby-2.0.0':;
'jruby':;
}
Hiera can also be used to define what rubies to install, making the Puppet code even less verbose
...
class { 'rvm': }
# rvm::system_user no longer needed
# rvm_system_ruby no longer needed
The equivalent hiera yaml configuration to the previous example
rvm::system_rubies:
'1.9':
default_use: true
'2.0': {}
'jruby-1.7': {}
rvm::system_users:
- vagrant