From 32fdb618625f011b7d7387428520441a91321e0e Mon Sep 17 00:00:00 2001 From: James Shubin Date: Mon, 7 Apr 2014 00:43:04 -0400 Subject: Pull operating system specific data from yaml files. This patch includes package names. --- .gitmodules | 3 +++ README | 1 + data/common.yaml | 5 ++++ data/hiera.yaml | 9 +++++++ data/tree/Debian.yaml | 4 ++++ data/tree/Debian/Debian.yaml | 4 ++++ data/tree/Debian/Debian/7.4.yaml | 4 ++++ data/tree/Debian/Ubuntu.yaml | 4 ++++ data/tree/Debian/Ubuntu/12.04.yaml | 4 ++++ data/tree/RedHat.yaml | 5 ++++ data/tree/RedHat/CentOS.yaml | 4 ++++ data/tree/RedHat/CentOS/6.5.yaml | 4 ++++ data/tree/RedHat/Fedora.yaml | 4 ++++ data/tree/RedHat/Fedora/20.yaml | 4 ++++ manifests/api.pp | 4 +++- manifests/brick.pp | 5 ++-- manifests/brick/ext4.pp | 5 +++- manifests/brick/xfs.pp | 5 +++- manifests/host.pp | 3 ++- manifests/mount.pp | 7 +++++- manifests/mount/base.pp | 6 +++-- manifests/params.pp | 38 ++++++++++++++++++++++++++++++ manifests/repo.pp | 2 +- manifests/server.pp | 9 +++---- manifests/volume.pp | 3 ++- manifests/volume/ping.pp | 5 +++- manifests/xml.pp | 10 ++++---- vagrant/gluster/puppet/modules/Makefile | 1 + vagrant/gluster/puppet/modules/module-data | 1 + 29 files changed, 143 insertions(+), 20 deletions(-) create mode 100644 data/common.yaml create mode 100644 data/hiera.yaml create mode 100644 data/tree/Debian.yaml create mode 100644 data/tree/Debian/Debian.yaml create mode 100644 data/tree/Debian/Debian/7.4.yaml create mode 100644 data/tree/Debian/Ubuntu.yaml create mode 100644 data/tree/Debian/Ubuntu/12.04.yaml create mode 100644 data/tree/RedHat.yaml create mode 100644 data/tree/RedHat/CentOS.yaml create mode 100644 data/tree/RedHat/CentOS/6.5.yaml create mode 100644 data/tree/RedHat/Fedora.yaml create mode 100644 data/tree/RedHat/Fedora/20.yaml create mode 100644 manifests/params.pp create mode 160000 vagrant/gluster/puppet/modules/module-data diff --git a/.gitmodules b/.gitmodules index c41791b..f5db0b9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "vagrant/gluster/puppet/modules/yum"] path = vagrant/gluster/puppet/modules/yum url = https://github.com/purpleidea/puppet-yum.git +[submodule "vagrant/gluster/puppet/modules/puppet-module"] + path = vagrant/gluster/puppet/modules/module-data + url = https://github.com/purpleidea/puppet-module-data.git diff --git a/README b/README index 6fe966f..c9482dd 100644 --- a/README +++ b/README @@ -19,6 +19,7 @@ Module specific notes: Dependencies: * puppetlabs-stdlib (required) +* puppet-module-data (optional, puppet >= 3.0.0) * my puppet-common module (optional) * my puppet-shorewall module (optional) * my puppet-keepalived module (optional) diff --git a/data/common.yaml b/data/common.yaml new file mode 100644 index 0000000..ea6f232 --- /dev/null +++ b/data/common.yaml @@ -0,0 +1,5 @@ +# gluster/data/common.yaml +--- +gluster::params::comment: 'Hello from @purpleidea!' # do not erase! + +# vim: ts=8 diff --git a/data/hiera.yaml b/data/hiera.yaml new file mode 100644 index 0000000..52b83b5 --- /dev/null +++ b/data/hiera.yaml @@ -0,0 +1,9 @@ +# gluster/data/hiera.yaml +--- +:hierarchy: +- tree/%{::osfamily}/%{::operatingsystem}/%{::operatingsystemrelease} +- tree/%{::osfamily}/%{::operatingsystem} +- tree/%{::osfamily} +- common + +# vim: ts=8 diff --git a/data/tree/Debian.yaml b/data/tree/Debian.yaml new file mode 100644 index 0000000..67818ac --- /dev/null +++ b/data/tree/Debian.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/Debian.yaml +--- + +# vim: ts=8 diff --git a/data/tree/Debian/Debian.yaml b/data/tree/Debian/Debian.yaml new file mode 100644 index 0000000..b6d2ec3 --- /dev/null +++ b/data/tree/Debian/Debian.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/Debian/Debian.yaml +--- + +# vim: ts=8 diff --git a/data/tree/Debian/Debian/7.4.yaml b/data/tree/Debian/Debian/7.4.yaml new file mode 100644 index 0000000..94cbd63 --- /dev/null +++ b/data/tree/Debian/Debian/7.4.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/Debian/Debian/7.4.yaml +--- + +# vim: ts=8 diff --git a/data/tree/Debian/Ubuntu.yaml b/data/tree/Debian/Ubuntu.yaml new file mode 100644 index 0000000..4bfe9d7 --- /dev/null +++ b/data/tree/Debian/Ubuntu.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/Debian/Ubuntu.yaml +--- + +# vim: ts=8 diff --git a/data/tree/Debian/Ubuntu/12.04.yaml b/data/tree/Debian/Ubuntu/12.04.yaml new file mode 100644 index 0000000..e6c234a --- /dev/null +++ b/data/tree/Debian/Ubuntu/12.04.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/Debian/Ubuntu/12.04.yaml +--- + +# vim: ts=8 diff --git a/data/tree/RedHat.yaml b/data/tree/RedHat.yaml new file mode 100644 index 0000000..417b83b --- /dev/null +++ b/data/tree/RedHat.yaml @@ -0,0 +1,5 @@ +# gluster/data/tree/RedHat.yaml +--- +gluster::repo::base: 'https://download.gluster.org/pub/gluster/glusterfs/' + +# vim: ts=8 diff --git a/data/tree/RedHat/CentOS.yaml b/data/tree/RedHat/CentOS.yaml new file mode 100644 index 0000000..d9ef302 --- /dev/null +++ b/data/tree/RedHat/CentOS.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/RedHat/CentOS.yaml +--- + +# vim: ts=8 diff --git a/data/tree/RedHat/CentOS/6.5.yaml b/data/tree/RedHat/CentOS/6.5.yaml new file mode 100644 index 0000000..06d5f62 --- /dev/null +++ b/data/tree/RedHat/CentOS/6.5.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/RedHat/CentOS/6.5.yaml +--- + +# vim: ts=8 diff --git a/data/tree/RedHat/Fedora.yaml b/data/tree/RedHat/Fedora.yaml new file mode 100644 index 0000000..d76a4a2 --- /dev/null +++ b/data/tree/RedHat/Fedora.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/RedHat/Fedora.yaml +--- + +# vim: ts=8 diff --git a/data/tree/RedHat/Fedora/20.yaml b/data/tree/RedHat/Fedora/20.yaml new file mode 100644 index 0000000..e132092 --- /dev/null +++ b/data/tree/RedHat/Fedora/20.yaml @@ -0,0 +1,4 @@ +# gluster/data/tree/RedHat/Fedora/20.yaml +--- + +# vim: ts=8 diff --git a/manifests/api.pp b/manifests/api.pp index 25002ce..1954e0b 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -19,12 +19,14 @@ class gluster::api( $repo = true, # are we using the automatic repo ? $version = '' # pick a specific version (defaults to latest) ) { + include gluster::params + $rname = "${version}" ? { '' => 'gluster', default => "gluster-${version}", } - package { 'glusterfs-api': + package { "${::gluster::params::package_glusterfs_api}": ensure => "${version}" ? { '' => present, default => "${version}", diff --git a/manifests/brick.pp b/manifests/brick.pp index 7fc3210..17cc9a6 100644 --- a/manifests/brick.pp +++ b/manifests/brick.pp @@ -48,6 +48,7 @@ define gluster::brick( include gluster::again } include gluster::vardir + include gluster::params #$vardir = $::gluster::vardir::module_vardir # with trailing slash $vardir = regsubst($::gluster::vardir::module_vardir, '\/$', '') @@ -259,7 +260,7 @@ define gluster::brick( } elsif ( $valid_fstype == 'xfs' ) { # exec requires include gluster::brick::xfs - $exec_requires = [Package['xfsprogs']] + $exec_requires = [Package["${::gluster::params::package_xfsprogs}"]] $xfs_arg00 = "/sbin/mkfs.${valid_fstype}" @@ -343,7 +344,7 @@ define gluster::brick( } elsif ( $valid_fstype == 'ext4' ) { # exec requires include gluster::brick::ext4 - $exec_requires = [Package['e2fsprogs']] + $exec_requires = [Package["${::gluster::params::package_e2fsprogs}"]] # mkfs w/ uuid command $mkfs_exec = "/sbin/mkfs.${valid_fstype} -U '${valid_fsuuid}' ${dev2}" diff --git a/manifests/brick/ext4.pp b/manifests/brick/ext4.pp index 1944bbb..9cbef74 100644 --- a/manifests/brick/ext4.pp +++ b/manifests/brick/ext4.pp @@ -16,7 +16,10 @@ # along with this program. If not, see . class gluster::brick::ext4 { - package { 'e2fsprogs': + + include gluster::params + + package { "${::gluster::params::package_e2fsprogs}": ensure => present, } } diff --git a/manifests/brick/xfs.pp b/manifests/brick/xfs.pp index c372219..8c1440c 100644 --- a/manifests/brick/xfs.pp +++ b/manifests/brick/xfs.pp @@ -16,7 +16,10 @@ # along with this program. If not, see . class gluster::brick::xfs { - package { 'xfsprogs': + + include gluster::params + + package { "${::gluster::params::package_xfsprogs}": ensure => present, } } diff --git a/manifests/host.pp b/manifests/host.pp index 4e39790..b28be83 100644 --- a/manifests/host.pp +++ b/manifests/host.pp @@ -25,6 +25,7 @@ define gluster::host( $password = '' # if empty, puppet will attempt to choose one magically ) { include gluster::vardir + include gluster::params #$vardir = $::gluster::vardir::module_vardir # with trailing slash $vardir = regsubst($::gluster::vardir::module_vardir, '\/$', '') @@ -169,7 +170,7 @@ define gluster::host( # NOTE: it's possible the cycle is a bug in puppet or a # bug in the dependencies somewhere else in this module. #require => File['/var/lib/glusterd/peers/'], - require => Package['glusterfs-server'], + require => Package["${::gluster::params::package_glusterfs_server}"], } # set state= diff --git a/manifests/mount.pp b/manifests/mount.pp index 637a18b..4e28576 100644 --- a/manifests/mount.pp +++ b/manifests/mount.pp @@ -27,6 +27,8 @@ define gluster::mount( $ip = '', # you can specify which ip address to use (if multiple) $shorewall = false ) { + include gluster::params + #mount -t glusterfs brick1.example.com:/test /test #include gluster::mount::base #class { '::gluster::mount::base': @@ -161,7 +163,10 @@ define gluster::mount( dump => '0', # fs_freq: 0 to skip file system dumps pass => '0', # fs_passno: 0 to skip fsck on boot require => [ - Package[['glusterfs', 'glusterfs-fuse']], + Package[ + ["${::gluster::params::package_glusterfs}", + "${::gluster::params::package_glusterfs_fuse}"] + ], File["${long_name}"], # the mountpoint Exec['gluster-fuse'], # ensure fuse is loaded! ], diff --git a/manifests/mount/base.pp b/manifests/mount/base.pp index af911f8..d177e66 100644 --- a/manifests/mount/base.pp +++ b/manifests/mount/base.pp @@ -20,6 +20,7 @@ class gluster::mount::base( $version = '' # pick a specific version (defaults to latest) ) { include gluster::vardir + include gluster::params #$vardir = $::gluster::vardir::module_vardir # with trailing slash $vardir = regsubst($::gluster::vardir::module_vardir, '\/$', '') @@ -36,12 +37,13 @@ class gluster::mount::base( ensure_resource('gluster::repo', "${rname}", $params) } - package { ['glusterfs', 'glusterfs-fuse']: + package { ["${::gluster::params::package_glusterfs}", + "${::gluster::params::package_glusterfs_fuse}"]: ensure => "${version}" ? { '' => present, default => "${version}", }, - before => Package['glusterfs-api'], + before => Package["${::gluster::params::package_glusterfs_api}"], require => $repo ? { false => undef, default => Gluster::Repo["${rname}"], diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 0000000..5d4b290 --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,38 @@ +# GlusterFS module by James +# Copyright (C) 2010-2013+ James Shubin +# Written by James Shubin +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +class gluster::params( + $package_glusterfs = 'glusterfs', + $package_glusterfs_fuse = 'glusterfs-fuse', + $package_glusterfs_server = 'glusterfs-server', + $package_glusterfs_api = 'glusterfs-api', + + $package_e2fsprogs = 'e2fsprogs', + $package_xfsprogs = 'xfsprogs', + + $package_python_argparse = 'python-argparse', + $package_python_lxml = 'python-lxml', + $package_fping = 'fping', + + $comment = '' +) { + if "${comment}" == '' { + warning('Unable to load yaml data/ directory!') + } + +} +# vim: ts=8 diff --git a/manifests/repo.pp b/manifests/repo.pp index 3c45ee0..747493c 100644 --- a/manifests/repo.pp +++ b/manifests/repo.pp @@ -22,7 +22,7 @@ define gluster::repo( # if you leave this blank, we assume you want the latest version... $version = '' ) { - $base = 'https://download.gluster.org/pub/gluster/glusterfs/' + $base = hiera('gluster::repo::base') # eg: 'https://download.gluster.org/pub/gluster/glusterfs/' if "${version}" == '' { # latest diff --git a/manifests/server.pp b/manifests/server.pp index 1208f64..b186b4d 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -32,6 +32,7 @@ class gluster::server( $FW = '$FW' # make using $FW in shorewall easier include gluster::vardir + include gluster::params #$vardir = $::gluster::vardir::module_vardir # with trailing slash $vardir = regsubst($::gluster::vardir::module_vardir, '\/$', '') @@ -57,16 +58,16 @@ class gluster::server( mode => 700, # u=rwx backup => false, # don't backup to filebucket ensure => present, - before => Package['glusterfs-server'], + before => Package["${::gluster::params::package_glusterfs_server}"], require => File["${vardir}/"], } - package { 'glusterfs-server': + package { "${::gluster::params::package_glusterfs_server}": ensure => "${version}" ? { '' => present, default => "${version}", }, - before => Package['glusterfs-api'], + before => Package["${::gluster::params::package_glusterfs_api}"], require => $repo ? { false => undef, default => Gluster::Repo["${rname}"], @@ -89,7 +90,7 @@ class gluster::server( group => root, mode => 644, #notify => Service['glusterd'], # TODO: ??? - require => Package['glusterfs-server'], + require => Package["${::gluster::params::package_glusterfs_server}"], } # NOTE: this option can be useful for users of libvirt migration as in: diff --git a/manifests/volume.pp b/manifests/volume.pp index ff6a824..cef0a73 100644 --- a/manifests/volume.pp +++ b/manifests/volume.pp @@ -35,6 +35,7 @@ define gluster::volume( include gluster::again } include gluster::vardir + include gluster::params include gluster::volume::base if $ping { include gluster::volume::ping @@ -220,7 +221,7 @@ define gluster::volume( default => [ Service['glusterd'], File["${vardir}/volume/create-${name}.sh"], - Package['fping'], + Package["${::gluster::params::package_fping}"], File["${vardir}/xml.py"], # status check Gluster::Brick[$valid_bricks], Exec["gluster-volume-stuck-${name}"], diff --git a/manifests/volume/ping.pp b/manifests/volume/ping.pp index 34cce44..d2ec4a2 100644 --- a/manifests/volume/ping.pp +++ b/manifests/volume/ping.pp @@ -17,7 +17,10 @@ class gluster::volume::ping { - package { 'fping': # for checking other bricks are up + include gluster::params + + # for checking other bricks are up + package { "${::gluster::params::package_fping}": ensure => present, } } diff --git a/manifests/xml.pp b/manifests/xml.pp index 28040d7..cad6e88 100644 --- a/manifests/xml.pp +++ b/manifests/xml.pp @@ -17,12 +17,14 @@ class gluster::xml { include gluster::vardir + include gluster::params - package { 'python-argparse': + package { "${::gluster::params::package_python_argparse}": ensure => present, } - package { 'python-lxml': # for parsing gluster xml output + # for parsing gluster xml output + package { "${::gluster::params::package_python_lxml}": ensure => present, } @@ -37,8 +39,8 @@ class gluster::xml { backup => false, # don't backup to filebucket ensure => present, require => [ - Package['python-argparse'], - Package['python-lxml'], + Package["${::gluster::params::package_python_argparse}"], + Package["${::gluster::params::package_python_lxml}"], File["${vardir}/"], ], } diff --git a/vagrant/gluster/puppet/modules/Makefile b/vagrant/gluster/puppet/modules/Makefile index ff66d16..4b66c5e 100644 --- a/vagrant/gluster/puppet/modules/Makefile +++ b/vagrant/gluster/puppet/modules/Makefile @@ -25,6 +25,7 @@ MODULES := \ puppet-common \ puppet-gluster \ puppet-keepalived \ + puppet-module-data \ puppet-puppet \ puppet-shorewall \ puppet-yum \ diff --git a/vagrant/gluster/puppet/modules/module-data b/vagrant/gluster/puppet/modules/module-data new file mode 160000 index 0000000..4b3ad1c --- /dev/null +++ b/vagrant/gluster/puppet/modules/module-data @@ -0,0 +1 @@ +Subproject commit 4b3ad1cc239d7831616e69796184e400de0f5fe4 -- cgit