summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Shubin <james@shubin.ca>2014-04-07 00:43:04 -0400
committerJames Shubin <james@shubin.ca>2014-05-07 12:52:05 -0400
commit32fdb618625f011b7d7387428520441a91321e0e (patch)
tree15af96f12b7c2920364bc1505b11bf31ea41c066
parent36ee0ebd22c3ccd55a9544b96c0cbfcbf70b153b (diff)
downloadpuppet-gluster-32fdb618625f011b7d7387428520441a91321e0e.tar.gz
puppet-gluster-32fdb618625f011b7d7387428520441a91321e0e.tar.xz
puppet-gluster-32fdb618625f011b7d7387428520441a91321e0e.zip
Pull operating system specific data from yaml files.
This patch includes package names.
-rw-r--r--.gitmodules3
-rw-r--r--README1
-rw-r--r--data/common.yaml5
-rw-r--r--data/hiera.yaml9
-rw-r--r--data/tree/Debian.yaml4
-rw-r--r--data/tree/Debian/Debian.yaml4
-rw-r--r--data/tree/Debian/Debian/7.4.yaml4
-rw-r--r--data/tree/Debian/Ubuntu.yaml4
-rw-r--r--data/tree/Debian/Ubuntu/12.04.yaml4
-rw-r--r--data/tree/RedHat.yaml5
-rw-r--r--data/tree/RedHat/CentOS.yaml4
-rw-r--r--data/tree/RedHat/CentOS/6.5.yaml4
-rw-r--r--data/tree/RedHat/Fedora.yaml4
-rw-r--r--data/tree/RedHat/Fedora/20.yaml4
-rw-r--r--manifests/api.pp4
-rw-r--r--manifests/brick.pp5
-rw-r--r--manifests/brick/ext4.pp5
-rw-r--r--manifests/brick/xfs.pp5
-rw-r--r--manifests/host.pp3
-rw-r--r--manifests/mount.pp7
-rw-r--r--manifests/mount/base.pp6
-rw-r--r--manifests/params.pp38
-rw-r--r--manifests/repo.pp2
-rw-r--r--manifests/server.pp9
-rw-r--r--manifests/volume.pp3
-rw-r--r--manifests/volume/ping.pp5
-rw-r--r--manifests/xml.pp10
-rw-r--r--vagrant/gluster/puppet/modules/Makefile1
m---------vagrant/gluster/puppet/modules/module-data0
29 files changed, 142 insertions, 20 deletions
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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
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 <james@shubin.ca>
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+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
+Subproject 4b3ad1cc239d7831616e69796184e400de0f5fe