summaryrefslogtreecommitdiffstats
path: root/manifests
diff options
context:
space:
mode:
authorJames Shubin <james@shubin.ca>2014-04-25 00:24:19 -0400
committerJames Shubin <james@shubin.ca>2014-05-07 12:52:05 -0400
commit9722c0515848670d642e21a220aca37f67b65492 (patch)
tree073d7922510e00ff6ec5f37c46a8b35b0db03e0b /manifests
parent32fdb618625f011b7d7387428520441a91321e0e (diff)
downloadpuppet-gluster-9722c0515848670d642e21a220aca37f67b65492.tar.gz
puppet-gluster-9722c0515848670d642e21a220aca37f67b65492.tar.xz
puppet-gluster-9722c0515848670d642e21a220aca37f67b65492.zip
Pull more operating system specific data from yaml files.
This patch includes program paths.
Diffstat (limited to 'manifests')
-rw-r--r--manifests/brick.pp30
-rw-r--r--manifests/mount/base.pp8
-rw-r--r--manifests/params.pp40
-rw-r--r--manifests/volume.pp24
-rw-r--r--manifests/volume/property.pp7
5 files changed, 75 insertions, 34 deletions
diff --git a/manifests/brick.pp b/manifests/brick.pp
index 17cc9a6..8e4aae9 100644
--- a/manifests/brick.pp
+++ b/manifests/brick.pp
@@ -149,8 +149,8 @@ define gluster::brick(
# get the raw /dev/vdx device, and append the partition number
$dev0 = "`/bin/readlink -e ${dev}`" # resolve to /dev/<device>
- $part_mklabel = "/sbin/parted -s -m -a optimal ${dev0} mklabel ${valid_labeltype}"
- $part_mkpart = "/sbin/parted -s -m -a optimal ${dev0} mkpart primary 0% 100%"
+ $part_mklabel = "${::gluster::params::program_parted} -s -m -a optimal ${dev0} mklabel ${valid_labeltype}"
+ $part_mkpart = "${::gluster::params::program_parted} -s -m -a optimal ${dev0} mkpart primary 0% 100%"
#
$dev1 = $partition ? {
@@ -180,15 +180,15 @@ define gluster::brick(
$lvm_dataalignment = inline_template('<%= @raid_su.to_i*@raid_sw.to_i %>')
$lvm_pvcreate = "${raid_su}${raid_sw}" ? { # both empty ?
- '' => "/sbin/pvcreate ${dev1}",
- default => "/sbin/pvcreate --dataalignment ${lvm_dataalignment}K ${dev1}",
+ '' => "${::gluster::params::program_pvcreate} ${dev1}",
+ default => "${::gluster::params::program_pvcreate} --dataalignment ${lvm_dataalignment}K ${dev1}",
}
- $lvm_vgcreate = "/sbin/vgcreate ${lvm_vgname} ${dev1}"
+ $lvm_vgcreate = "${::gluster::params::program_vgcreate} ${lvm_vgname} ${dev1}"
# match --virtualsize with 100% of available vg by default
$lvm_thinp_virtsize = "${lvm_virtsize}" ? { # --virtualsize
- '' => "`/sbin/vgs -o size --units b --noheadings ${lvm_vgname}`",
+ '' => "`${::gluster::params::program_vgs} -o size --units b --noheadings ${lvm_vgname}`",
default => "${lvm_virtsize}",
}
@@ -208,7 +208,7 @@ define gluster::brick(
# MIRROR: http://man7.org/linux/man-pages/man7/lvmthin.7.html
# TODO: is this the optimal setup for thin-p ?
$lvm_thinp_lvcreate_cmdlist = [
- '/sbin/lvcreate',
+ "${::gluster::params::program_lvcreate}",
"--thinpool ${lvm_vgname}/${lvm_tpname}", # thinp
'--extents 100%FREE', # let lvm figure out the --size
"--virtualsize ${lvm_thinp_virtsize}",
@@ -221,7 +221,7 @@ define gluster::brick(
# creates dev /dev/vgname/lvname
$lvm_lvcreate = $lvm_thinp ? {
true => "${lvm_thinp_lvcreate}",
- default => "/sbin/lvcreate --extents 100%PVS -n ${lvm_lvname} ${lvm_vgname}",
+ default => "${::gluster::params::program_lvcreate} --extents 100%PVS -n ${lvm_lvname} ${lvm_vgname}",
}
}
@@ -262,7 +262,7 @@ define gluster::brick(
include gluster::brick::xfs
$exec_requires = [Package["${::gluster::params::package_xfsprogs}"]]
- $xfs_arg00 = "/sbin/mkfs.${valid_fstype}"
+ $xfs_arg00 = "${::gluster::params::program_mkfs_xfs}"
$xfs_arg01 = '-q' # shh!
@@ -308,7 +308,7 @@ define gluster::brick(
$xfs_cmd = join(delete($xfs_cmdlist, ''), ' ')
# TODO: xfs_admin doesn't have a --quiet flag. silence it...
- $xfs_admin = "/usr/sbin/xfs_admin -U '${valid_fsuuid}' ${dev2}"
+ $xfs_admin = "${::gluster::params::program_xfs_admin} -U '${valid_fsuuid}' ${dev2}"
# mkfs w/ uuid command
$mkfs_exec = "${xfs_cmd} && ${xfs_admin}"
@@ -347,7 +347,7 @@ define gluster::brick(
$exec_requires = [Package["${::gluster::params::package_e2fsprogs}"]]
# mkfs w/ uuid command
- $mkfs_exec = "/sbin/mkfs.${valid_fstype} -U '${valid_fsuuid}' ${dev2}"
+ $mkfs_exec = "${::gluster::params::program_mkfs_ext4} -U '${valid_fsuuid}' ${dev2}"
# mount options
$options_list = [] # TODO
@@ -404,7 +404,7 @@ define gluster::brick(
exec { "${lvm_pvcreate}":
logoutput => on_failure,
unless => [ # if one element is true, this *doesn't* run
- "/sbin/pvdisplay ${dev1}",
+ "${::gluster::params::program_pvdisplay} ${dev1}",
'/bin/false', # TODO: add more criteria
],
require => $exec_requires,
@@ -417,7 +417,7 @@ define gluster::brick(
exec { "${lvm_vgcreate}":
logoutput => on_failure,
unless => [ # if one element is true, this *doesn't* run
- "/sbin/vgdisplay ${lvm_vgname}",
+ "${::gluster::params::program_vgdisplay} ${lvm_vgname}",
'/bin/false', # TODO: add more criteria
],
require => $exec_requires,
@@ -430,8 +430,8 @@ define gluster::brick(
exec { "${lvm_lvcreate}":
logoutput => on_failure,
unless => [ # if one element is true, this *doesn't* run
- #"/sbin/lvdisplay ${lvm_lvname}", # nope!
- "/sbin/lvs --separator ':' | /usr/bin/tr -d ' ' | /bin/awk -F ':' '{print \$1}' | /bin/grep -q '${lvm_lvname}'",
+ #"${::gluster::params::program_lvdisplay} ${lvm_lvname}", # nope!
+ "${::gluster::params::program_lvs} --separator ':' | /usr/bin/tr -d ' ' | /bin/awk -F ':' '{print \$1}' | /bin/grep -q '${lvm_lvname}'",
'/bin/false', # TODO: add more criteria
],
require => $exec_requires,
diff --git a/manifests/mount/base.pp b/manifests/mount/base.pp
index d177e66..5e48c10 100644
--- a/manifests/mount/base.pp
+++ b/manifests/mount/base.pp
@@ -64,20 +64,20 @@ class gluster::mount::base(
#
# modprobe fuse if it's missing
- exec { '/sbin/modprobe fuse':
+ exec { "${::gluster::params::program_modprobe} fuse":
logoutput => on_failure,
onlyif => '/usr/bin/test -z "`/bin/dmesg | /bin/grep -i fuse`"',
alias => 'gluster-fuse',
}
- #exec { '/sbin/modprobe fuse':
+ #exec { "${::gluster::params::program_modprobe} fuse":
# logoutput => on_failure,
- # unless => "/sbin/lsmod | /bin/grep -q '^fuse'",
+ # unless => "${::gluster::params::program_lsmod} | /bin/grep -q '^fuse'",
# alias => 'gluster-modprobe-fuse',
#}
# TODO: will this autoload the fuse module?
#file { '/etc/modprobe.d/fuse.conf':
- # content => "fuse\n", # TODO: "install fuse /sbin/modprobe --ignore-install fuse ; /bin/true\n" ?
+ # content => "fuse\n", # TODO: "install fuse ${::gluster::params::program_modprobe} --ignore-install fuse ; /bin/true\n" ?
# owner => root,
# group => root,
# mode => 644, # u=rw,go=r
diff --git a/manifests/params.pp b/manifests/params.pp
index 5d4b290..fc71cec 100644
--- a/manifests/params.pp
+++ b/manifests/params.pp
@@ -16,6 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
class gluster::params(
+ # packages...
$package_glusterfs = 'glusterfs',
$package_glusterfs_fuse = 'glusterfs-fuse',
$package_glusterfs_server = 'glusterfs-server',
@@ -28,11 +29,50 @@ class gluster::params(
$package_python_lxml = 'python-lxml',
$package_fping = 'fping',
+ # programs...
+ $program_gluster = '/usr/sbin/gluster',
+
+ $program_modprobe = '/sbin/modprobe',
+ $program_lsmod = '/sbin/lsmod',
+
+ $program_parted = '/sbin/parted',
+ $program_pvcreate = '/sbin/pvcreate',
+ $program_vgcreate = '/sbin/vgcreate',
+ $program_lvcreate = '/sbin/lvcreate',
+ $program_vgs = '/sbin/vgs',
+ $program_lvs = '/sbin/lvs',
+ $program_pvdisplay = '/sbin/pvdisplay',
+ $program_vgdisplay = '/sbin/vgdisplay',
+ #$program_lvdisplay = '/sbin/lvdisplay',
+ $program_xfsadmin = '/usr/sbin/xfs_admin',
+ $program_mkfs_xfs = '/sbin/mkfs.xfs',
+ $program_mkfs_ext4 = '/sbin/mkfs.ext4',
+
+ $program_fping = '/usr/sbin/fping',
+
+ # misc...
+ $misc_gluster_reload = '/sbin/service glusterd reload',
+
+ # comment...
$comment = ''
) {
if "${comment}" == '' {
warning('Unable to load yaml data/ directory!')
}
+ include puppet::facter
+ $factbase = "${::puppet::facter::base}"
+ $hash = {
+ 'gluster_program_gluster' => $program_gluster,
+ }
+ # create a custom external fact!
+ file { "${factbase}gluster_program.yaml":
+ content => inline_template('<%= @hash.to_yaml %>')
+ owner => root,
+ group => root,
+ mode => 644, # u=rw,go=r
+ ensure => present,
+ }
}
+
# vim: ts=8
diff --git a/manifests/volume.pp b/manifests/volume.pp
index cef0a73..3a15fae 100644
--- a/manifests/volume.pp
+++ b/manifests/volume.pp
@@ -199,8 +199,8 @@ define gluster::volume(
# get the list of bricks fqdn's that don't have our fqdn
$others = inline_template("<%= @valid_bricks.find_all{|x| x.split(':')[0] != '${fqdn}' }.collect {|y| y.split(':')[0] }.join(' ') %>")
- $fping = sprintf("/usr/sbin/fping -q %s", $others)
- $status = sprintf("/usr/sbin/gluster peer status --xml | ${vardir}/xml.py connected %s", $others)
+ $fping = sprintf("${::gluster::params::program_fping} -q %s", $others)
+ $status = sprintf("${::gluster::params::program_gluster} peer status --xml | ${vardir}/xml.py connected %s", $others)
$onlyif = $ping ? {
false => "${status}",
@@ -230,10 +230,10 @@ define gluster::volume(
# work around stuck connection state (4) of: 'Accepted peer request'...
exec { "gluster-volume-stuck-${name}":
- command => '/sbin/service glusterd reload',
+ command => "${::gluster::params::misc_gluster_reload}",
logoutput => on_failure,
- unless => "/usr/sbin/gluster volume list | /bin/grep -qxF '${name}' -", # reconnect if it doesn't exist
- onlyif => sprintf("/usr/sbin/gluster peer status --xml | ${vardir}/xml.py stuck %s", $others),
+ unless => "${::gluster::params::program_gluster} volume list | /bin/grep -qxF '${name}' -", # reconnect if it doesn't exist
+ onlyif => sprintf("${::gluster::params::program_gluster} peer status --xml | ${vardir}/xml.py stuck %s", $others),
notify => $again ? {
false => undef,
default => Common::Again::Delta['gluster-exec-again'],
@@ -253,7 +253,7 @@ define gluster::volume(
# FIXME: it would be create to have an --allow-root-storage type option
# instead, so that we don't inadvertently force some other bad thing...
file { "${vardir}/volume/create-${name}.sh":
- content => inline_template("#!/bin/bash\n/bin/sleep 5s && /usr/sbin/gluster volume create ${name} ${valid_replica}${valid_stripe}transport ${valid_transport} ${brick_spec} force > >(/usr/bin/tee '/tmp/gluster-volume-create-${name}.stdout') 2> >(/usr/bin/tee '/tmp/gluster-volume-create-${name}.stderr' >&2) || (${rmdir_volume_dirs} && /bin/false)\nexit \$?\n"),
+ content => inline_template("#!/bin/bash\n/bin/sleep 5s && ${::gluster::params::program_gluster} volume create ${name} ${valid_replica}${valid_stripe}transport ${valid_transport} ${brick_spec} force > >(/usr/bin/tee '/tmp/gluster-volume-create-${name}.stdout') 2> >(/usr/bin/tee '/tmp/gluster-volume-create-${name}.stderr' >&2) || (${rmdir_volume_dirs} && /bin/false)\nexit \$?\n"),
owner => root,
group => root,
mode => 755,
@@ -289,7 +289,7 @@ define gluster::volume(
exec { "gluster-volume-create-${name}":
command => "${vardir}/volume/create-${name}.sh",
logoutput => on_failure,
- unless => "/usr/sbin/gluster volume list | /bin/grep -qxF '${name}' -", # add volume if it doesn't exist
+ unless => "${::gluster::params::program_gluster} volume list | /bin/grep -qxF '${name}' -", # add volume if it doesn't exist
onlyif => $onlyif,
#before => TODO?,
require => $require,
@@ -299,10 +299,10 @@ define gluster::volume(
if $start == true {
# try to start volume if stopped
- exec { "/usr/sbin/gluster volume start ${name}":
+ exec { "${::gluster::params::program_gluster} volume start ${name}":
logoutput => on_failure,
- onlyif => "/usr/sbin/gluster volume list | /bin/grep -qxF '${name}' -",
- unless => "/usr/sbin/gluster volume status ${name}", # returns false if stopped
+ onlyif => "${::gluster::params::program_gluster} volume list | /bin/grep -qxF '${name}' -",
+ unless => "${::gluster::params::program_gluster} volume status ${name}", # returns false if stopped
notify => $shorewall ? {
false => undef,
default => $again ? {
@@ -323,9 +323,9 @@ define gluster::volume(
# make its data inaccessible. Do you want to continue? (y/n)
# TODO: http://community.gluster.org/q/how-can-i-make-automatic-scripts/
# TODO: gluster --mode=script volume stop ...
- exec { "/usr/bin/yes | /usr/sbin/gluster volume stop ${name}":
+ exec { "/usr/bin/yes | ${::gluster::params::program_gluster} volume stop ${name}":
logoutput => on_failure,
- onlyif => "/usr/sbin/gluster volume status ${name}", # returns true if started
+ onlyif => "${::gluster::params::program_gluster} volume status ${name}", # returns true if started
require => $settled ? { # require if type exists
false => undef,
default => Exec["gluster-volume-create-${name}"],
diff --git a/manifests/volume/property.pp b/manifests/volume/property.pp
index 39dff6b..a4b3548 100644
--- a/manifests/volume/property.pp
+++ b/manifests/volume/property.pp
@@ -24,6 +24,7 @@ define gluster::volume::property(
) {
include gluster::xml
include gluster::vardir
+ include gluster::params
include gluster::volume::property::data
#$vardir = $::gluster::vardir::module_vardir # with trailing slash
@@ -167,9 +168,9 @@ define gluster::volume::property(
# set a volume property only if value doesn't match what is available
# FIXME: check that the value we're setting isn't the default
# FIXME: you can check defaults with... gluster volume set help | ...
- exec { "/usr/sbin/gluster volume set ${volume} ${key} ${safe_value}":
- unless => "/usr/bin/test \"`/usr/sbin/gluster volume --xml info ${volume} | ${vardir}/xml.py property --key '${key}'`\" = '${safe_value}'",
- onlyif => "/usr/sbin/gluster volume list | /bin/grep -qxF '${volume}' -",
+ exec { "${::gluster::params::program_gluster} volume set ${volume} ${key} ${safe_value}":
+ unless => "/usr/bin/test \"`${::gluster::params::program_gluster} volume --xml info ${volume} | ${vardir}/xml.py property --key '${key}'`\" = '${safe_value}'",
+ onlyif => "${::gluster::params::program_gluster} volume list | /bin/grep -qxF '${volume}' -",
logoutput => on_failure,
require => [
Gluster::Volume[$volume],