From d21096dbe13080558b09813d8a8e2d2ed733763e Mon Sep 17 00:00:00 2001 From: Ashley Camba Garrido Date: Thu, 23 Feb 2012 13:41:54 +0100 Subject: [PATCH] reorganized pythonbrew using puppet standards --- manifests/dependencies.pp | 8 --- manifests/init.pp | 54 ++++++++++++++++--- manifests/package.pp | 31 +++++++++++ manifests/{dependencies => package}/debian.pp | 2 +- manifests/package/redhat.pp | 0 manifests/package/suse.pp | 0 manifests/params.pp | 19 +++++++ manifests/version.pp | 2 - 8 files changed, 99 insertions(+), 17 deletions(-) delete mode 100644 manifests/dependencies.pp create mode 100644 manifests/package.pp rename manifests/{dependencies => package}/debian.pp (98%) create mode 100644 manifests/package/redhat.pp create mode 100644 manifests/package/suse.pp create mode 100644 manifests/params.pp diff --git a/manifests/dependencies.pp b/manifests/dependencies.pp deleted file mode 100644 index 70d58e7..0000000 --- a/manifests/dependencies.pp +++ /dev/null @@ -1,8 +0,0 @@ - -class pythonbrew::dependencies { - require => Anchor['pythonbrew::begin'], - case $operatingsystem { - Ubuntu,Debian: { require pythonbrew::dependencies::debian } - CentOS,RedHat: { require pythonbrew::dependencies::centos } - } -} diff --git a/manifests/init.pp b/manifests/init.pp index 39b76ab..b36fdd4 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,11 +1,53 @@ +# Class: pythonbrew +# +# This module manages pythonbrew python's. +# +# Parameters: +# +# There are no default parameters for this class. All module parameters are managed +# via the nginx::params class +# +# Actions: +# +# Requires: +# puppetlabs-stdlib - https://github.com/puppetlabs/puppetlabs-stdlib +# +# stdlib +# - puppetlabs-stdlib module >= 0.1.6 +# - plugin sync enabled to obtain the anchor type +# +# Sample Usage: +# +# The module works with sensible defaults: +# +# node default { +# include pythonbrew +# } +class pythonbrew { -class pythonbrew($user='root') { - anchor {'pythonbrew::begin'} - anchor {'pythonbrew::end'} + class { 'stdlib': } + + class { 'pythonbrew::package': + notify => Exec['pythonbrew::install'], + } + + class { 'pythonbrew::params': + require => Class['pythonbrew::package'], + notify => Exec['pythonbrew::install'], + } exec {'pythonbrew::install': command => "curl -kL http://xrl.us/pythonbrewinstall | bash", - require => Class['pythonbrew::dependencies'], - user => $user, - } + require => Class['pythonbrew::package'], + user => $pythonbrew::params::user, + } + + anchor {'pythonbrew::begin': + before => Class['pythonbrew::package'], + notify => Exec['pythonbrew::install'] + } + anchor {'pythonbrew::end': + require => Exec['pythonbrew::install'], + } + } diff --git a/manifests/package.pp b/manifests/package.pp new file mode 100644 index 0000000..8eb71b2 --- /dev/null +++ b/manifests/package.pp @@ -0,0 +1,31 @@ +# Class: pythonbrew::dependencies +# +# Takes care of system dependencies +# Currently only works for ubuntu/debian +# patches for centos and suse welcome + +class pythonbrew::package { + anchor { 'pythonbrew::package::begin': } + anchor { 'pythonbrew::package::end': } + + case $::operatingsystem { + centos,fedora,rhel: { + class { 'pythonbrew::package::redhat': + require => Anchor['pythonbrew::package::begin'], + before => Anchor['pythonbrew::package::end'], + } + } + debian,ubuntu: { + class { 'pythonbrew::package::debian': + require => Anchor['pythonbrew::package::begin'], + before => Anchor['pythonbrew::package::end'], + } + } + opensuse,suse: { + class { 'pythonbrew::package::suse': + require => Anchor['pythonbrew::package::begin'], + before => Anchor['pythonbrew::package::end'], + } + } + } +} diff --git a/manifests/dependencies/debian.pp b/manifests/package/debian.pp similarity index 98% rename from manifests/dependencies/debian.pp rename to manifests/package/debian.pp index 194cf72..d713fd2 100644 --- a/manifests/dependencies/debian.pp +++ b/manifests/package/debian.pp @@ -1,4 +1,4 @@ -class pythonbrew::dependencies::ubuntu { +class pythonbrew::package::debian { if ! defined(Package['curl']) { package { 'curl': ensure => installed } } if ! defined(Package['build-essential']) { package { 'build-essential': ensure => installed } } diff --git a/manifests/package/redhat.pp b/manifests/package/redhat.pp new file mode 100644 index 0000000..e69de29 diff --git a/manifests/package/suse.pp b/manifests/package/suse.pp new file mode 100644 index 0000000..e69de29 diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 0000000..17fd1a4 --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,19 @@ +# Class: nginx::params +# +# This module manages pythonbrew paramaters +# +# Parameters: +# +# There are no default parameters for this class. +# +# Actions: +# +# Requires: +# +# Sample Usage: +# +# This class file is not called directly +class pythonbrew::params { + $user = 'root' + $build_opt = '' +} diff --git a/manifests/version.pp b/manifests/version.pp index 2118125..5f8a890 100644 --- a/manifests/version.pp +++ b/manifests/version.pp @@ -4,8 +4,6 @@ $test => 'false', ) { - require => Anchor['pythonbrew::end'] - if $ensure == 'present' { exec { "install-python-${name}": command => "pythonbrew install ${name} -n",