From dbd5f5000382e622c8e252d67a7dcbd3e937d348 Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Tue, 13 Nov 2012 12:12:16 -0500 Subject: setup parameterized class to enable versioned installation of ruby package on different operating system --- manifests/init.pp | 38 +++++++++++++++++++++++++++++++++++--- manifests/params.pp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 manifests/params.pp 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}") + } + } +} + -- cgit v1.2.3