phpservermon/puphpet/puppet/nodes/Ruby.pp

84 lines
1.9 KiB
Puppet

if $ruby_values == undef { $ruby_values = hiera_hash('ruby', false) }
include puphpet::params
if hash_key_true($ruby_values, 'versions') and count($ruby_values['versions']) > 0 {
$rvm_has_default = false
rvm_dotfile { 'do': }
create_resources(install_ruby, $ruby_values['versions'])
}
define install_ruby (
$version,
$default = false,
$bundler = false,
$gems = []
) {
$default_true = value_true($default)
$bundler_true = value_true($bundle)
if value_true($version) {
rvm_system_ruby { $version:
default_use => $default_true,
ensure => present,
require => File_line['rvm_autoupdate_flag=0 >> ~/.rvmrc'],
}
if $bundler_true == true {
$gems_merged = concat($gems, 'bundler')
} else {
$gems_merged = $gems
}
if count($gems_merged) > 0 {
each( $gems_merged ) |$key, $gem| {
$gem_array = split($gem, '@')
if count($gem_array) == 2 {
$gem_ensure = $gem_array[1]
} else {
$gem_ensure = present
}
rvm_gem { $gem_array[0]:
name => $gem_array[0],
ruby_version => $version,
ensure => $gem_ensure,
require => Rvm_system_ruby[$version]
}
}
}
}
}
define rvm_dotfile {
if $::ssh_username != 'root' {
file { "/home/${::ssh_username}/.rvmrc":
ensure => present,
owner => $::ssh_username,
require => User[$::ssh_username]
}
file_line { 'rvm_autoupdate_flag=0 >> ~/.rvmrc':
ensure => present,
line => 'rvm_autoupdate_flag=0',
path => "/home/${::ssh_username}/.rvmrc",
require => File["/home/${::ssh_username}/.rvmrc"],
}
}
file { "/root/.rvmrc":
ensure => present,
owner => 'root',
}
file_line { 'rvm_autoupdate_flag=0 >> /root/.rvmrc':
ensure => present,
line => 'rvm_autoupdate_flag=0',
path => "/root/.rvmrc",
require => File["/root/.rvmrc"],
}
}