diff options
-rw-r--r-- | manifests/captcha/v_0_1_2.pp | 5 | ||||
-rw-r--r-- | manifests/fastercsv.pp | 6 | ||||
-rw-r--r-- | manifests/gd/v_0_7_4.pp | 5 | ||||
-rw-r--r-- | manifests/gem.pp | 108 | ||||
-rw-r--r-- | manifests/gem/cachedir.pp | 4 | ||||
-rw-r--r-- | manifests/json/v_1_4_6.pp | 3 | ||||
-rw-r--r-- | manifests/moneta.pp | 7 | ||||
-rw-r--r-- | manifests/mysql.pp | 5 | ||||
-rw-r--r-- | manifests/net-ldap/v_0_0_4.pp | 3 | ||||
-rw-r--r-- | manifests/ntlm/v_0_1_1.pp | 3 | ||||
-rw-r--r-- | manifests/postgres.pp | 4 |
11 files changed, 153 insertions, 0 deletions
diff --git a/manifests/captcha/v_0_1_2.pp b/manifests/captcha/v_0_1_2.pp new file mode 100644 index 0000000..2a4e712 --- /dev/null +++ b/manifests/captcha/v_0_1_2.pp @@ -0,0 +1,5 @@ +class rubygems::captcha::v_0_1_2 { + rubygems::gem{ 'captcha-0.1.2': + requiresgcc => true, + } +} diff --git a/manifests/fastercsv.pp b/manifests/fastercsv.pp new file mode 100644 index 0000000..95ae021 --- /dev/null +++ b/manifests/fastercsv.pp @@ -0,0 +1,6 @@ +class rubygems::fastercsv { + rubygems::gem{'fastercsv': + ensure => present, + source => 'http://rubyforge.org/frs/download.php/43190/fastercsv-1.4.0.gem', + } +} diff --git a/manifests/gd/v_0_7_4.pp b/manifests/gd/v_0_7_4.pp new file mode 100644 index 0000000..9027ecb --- /dev/null +++ b/manifests/gd/v_0_7_4.pp @@ -0,0 +1,5 @@ +class rubygems::gd::v_0_7_4 { + rubygems::gem{ 'ruby-gd-0.7.4': + buildflags => '--with-freetype', + } +} diff --git a/manifests/gem.pp b/manifests/gem.pp new file mode 100644 index 0000000..14b6785 --- /dev/null +++ b/manifests/gem.pp @@ -0,0 +1,108 @@ +# Installs gems that are slightly broken +# As a name it expects the name of the gem. +# If you want to want to install a certain version +# you have to append the version to the gem name: +# +# install a version of mime-types: +# rubygems::gem{'mime-types': } +# +# install version 0.0.4 of ruby-net-ldap: +# rubygems::gem{'ruby-net-ldap-0.0.4': } +# +# uninstall polygot gem (until no such gem is anymore installed): +# rubygems::gem{'polygot': ensure => absent } +# +# uninstall ruby-net-ldap version 0.0.3 +# rubygems::gem{'ruby-net-ldap-0.0.3': ensure => absent } +# +# You can also set your own buildlfags, which will then install +# the gem in question by the gem command. +# +# You can also enforce to use the gem command to manage the gem +# by setting provider to `exec`. +# +define rubygems::gem( + $ensure = 'present', + $source = 'absent', + $provider = 'default', + $buildflags = 'absent', + $requiresgcc = false +) { + require ::rubygems + if $requiresgcc or ($buildflags != 'absent') { + require ::gcc + } + + if $name =~ /\-(\d|\.)+$/ { + $real_name = regsubst($name,'^(.*)-(\d|\.)+$','\1') + $gem_version = regsubst($name,'^(.*)-(\d+(\d|\.)+)$','\2') + } else { + $real_name = $name + } + + if $source != 'absent' { + if $ensure != 'absent' { + require rubygems::gem::cachedir + exec{"get-gem-$name": + command => "/usr/bin/wget -O ${rubygems::gem::cachedir::dir}/$name.gem $source", + creates => "${rubygems::gem::cachedir::dir}/$name.gem", + } + } else { + file{"${rubygems::gem::cachedir::dir}/$name.gem": + ensure => 'absent'; + } + } + } + + if ($buildflags != 'absent') or ($provider == 'exec') { + if $gem_version { + $gem_version_str = "-v ${gem_version}" + $gem_version_check_str = $gem_version + } else { + $gem_version_check_str = '.*' + } + + if $ensure == 'present' { + $gem_cmd = 'install' + } else { + $gem_cmd = 'uninstall -x' + } + + if $buildflags != 'absent' { + $buildflags_str = "-- --build-flags ${buildflags}" + } else { + $buildflags_str = '' + } + + exec{"manage_gem_${name}": + command => "gem ${gem_cmd} ${real_name} ${gem_version_str} ${buildflags_str}", + } + + $gem_cmd_check_str = "gem list | egrep -q '^${real_name} \\(${gem_version_check_str}\\)\$'" + if $ensure == 'present' { + Exec["manage_gem_${name}"]{ + unless => $gem_cmd_check_str + } + } else { + Exec["manage_gem_${name}"]{ + onlyif => $gem_cmd_check_str + } + } + } else { + package{"$real_name": + ensure => $ensure ? { + 'absent' => $ensure, + default => $gem_version ? { + undef => $ensure, + default => $gem_version + } + }, + provider => gem, + } + if $source != 'absent' { + Package["$name"]{ + source => "${rubygems::gem::cachedir::dir}/$name.gem" + } + } + } +} diff --git a/manifests/gem/cachedir.pp b/manifests/gem/cachedir.pp new file mode 100644 index 0000000..3e371e4 --- /dev/null +++ b/manifests/gem/cachedir.pp @@ -0,0 +1,4 @@ +class rubygems::gem::cachedir { + $dir = '/var/lib/puppet/modules/rubygems_cache' + modules_dir{'rubygems_cache': } +} diff --git a/manifests/json/v_1_4_6.pp b/manifests/json/v_1_4_6.pp new file mode 100644 index 0000000..d0901ba --- /dev/null +++ b/manifests/json/v_1_4_6.pp @@ -0,0 +1,3 @@ +class rubygems::json::v_1_4_6 { + rubygems::gem{ 'json-1.4.6': } +} diff --git a/manifests/moneta.pp b/manifests/moneta.pp new file mode 100644 index 0000000..f60cc40 --- /dev/null +++ b/manifests/moneta.pp @@ -0,0 +1,7 @@ +class rubygems::moneta { + require rubygems + package{'mondeta': + ensure => present, + provider => gem, + } +} diff --git a/manifests/mysql.pp b/manifests/mysql.pp new file mode 100644 index 0000000..cc0bbbf --- /dev/null +++ b/manifests/mysql.pp @@ -0,0 +1,5 @@ +class rubygems::mysql { + require ::mysql::devel + require gcc + rubygems::gem{'mysql':} +} diff --git a/manifests/net-ldap/v_0_0_4.pp b/manifests/net-ldap/v_0_0_4.pp new file mode 100644 index 0000000..ea809e0 --- /dev/null +++ b/manifests/net-ldap/v_0_0_4.pp @@ -0,0 +1,3 @@ +class rubygems::net-ldap::v_0_0_4 { + rubygems::gem{ 'ruby-net-ldap-0.0.4': } +} diff --git a/manifests/ntlm/v_0_1_1.pp b/manifests/ntlm/v_0_1_1.pp new file mode 100644 index 0000000..fd6eade --- /dev/null +++ b/manifests/ntlm/v_0_1_1.pp @@ -0,0 +1,3 @@ +class rubygems::ntlm::v_0_1_1 { + rubygems::gem{ 'rubyntlm-0.1.1': } +} diff --git a/manifests/postgres.pp b/manifests/postgres.pp new file mode 100644 index 0000000..a80ce0b --- /dev/null +++ b/manifests/postgres.pp @@ -0,0 +1,4 @@ +class rubygems::postgres { + require ::postgres::devel + rubygems::gem{'ruby-pg':} +} |