summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--manifests/captcha/v_0_1_2.pp5
-rw-r--r--manifests/fastercsv.pp6
-rw-r--r--manifests/gd/v_0_7_4.pp5
-rw-r--r--manifests/gem.pp108
-rw-r--r--manifests/gem/cachedir.pp4
-rw-r--r--manifests/json/v_1_4_6.pp3
-rw-r--r--manifests/mysql.pp5
-rw-r--r--manifests/net-ldap/v_0_0_4.pp3
-rw-r--r--manifests/ntlm/v_0_1_1.pp3
-rw-r--r--manifests/postgres.pp4
10 files changed, 146 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/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':}
+}