summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2012-11-13 12:12:16 -0500
committerMicah Anderson <micah@riseup.net>2012-11-13 12:12:16 -0500
commitdbd5f5000382e622c8e252d67a7dcbd3e937d348 (patch)
tree7c263e7d5986845654fa32dd5cf3bb38c9a2ca8f
parent21acba1137726ac72d3bef00aefc605edbfe5ea0 (diff)
setup parameterized class to enable versioned installation of ruby package on different operating system
-rw-r--r--manifests/init.pp38
-rw-r--r--manifests/params.pp48
2 files changed, 83 insertions, 3 deletions
diff --git a/manifests/init.pp b/manifests/init.pp
index 630addf..6a62838 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,5 +1,37 @@
-class ruby {
- package{'ruby':
- ensure => installed,
+# Class: ruby
+#
+# This class installs Ruby
+#
+# Parameters:
+#
+# version: (default installed)
+# Set the version of Ruby to install
+#
+# Sample Usage:
+#
+# For a standard install using the latest ruby, simply do:
+#
+# class { 'ruby': }
+#
+# On Debian this is equivilant to
+# $ apt-get install ruby
+#
+# To install a specific version of ruby, simply do:
+#
+# class { 'ruby':
+# version => '1.8.7',
+# }
+#
+# Supported version: 1.8, 1.8.7, 1.9, 1.9.1, 1.9.3
+
+class ruby (
+ $version = $ruby::params::version,
+ $ruby_dev = $ruby::params::ruby_dev,
+ $ruby_package = $ruby::params::ruby_package
+) inherits ruby::params {
+
+ package{ 'ruby':
+ ensure => $version,
+ name => $ruby_package
}
}
diff --git a/manifests/params.pp b/manifests/params.pp
new file mode 100644
index 0000000..f388408
--- /dev/null
+++ b/manifests/params.pp
@@ -0,0 +1,48 @@
+# Class: ruby::params
+#
+# This class handles the Ruby module parameters
+#
+# Parameters:
+# $ruby_dev = the name of the Ruby development libraries
+#
+# Actions:
+#
+# Requires:
+#
+# Sample Usage:
+#
+class ruby::params {
+
+ $version = 'installed'
+ $ruby_package = 'ruby'
+
+ case $::osfamily {
+ 'redhat', 'suse': {
+ $ruby_dev='ruby-devel'
+ }
+ 'debian': {
+ case $version {
+ '1.8', '1.8.7': {
+ $ruby_package = 'ruby1.8'
+ $ruby_dev = [ 'ruby1.8-dev', 'rake' ]
+ }
+ '1.9.1': {
+ $ruby_package = 'ruby1.9.1'
+ $ruby_dev = [ 'ruby1.9.1-dev', 'rake' ]
+ }
+ '1.9', '1.9.3': {
+ $ruby_package = 'ruby1.9'
+ $ruby_dev = [ 'ruby-dev', 'rake' ]
+ }
+ default: {
+ $ruby_package = 'ruby'
+ $ruby_dev = [ 'ruby-dev', 'rake' ]
+ }
+ }
+ }
+ default: {
+ fail("Unsupported OS family: ${::osfamily}")
+ }
+ }
+}
+