phpservermon/puphpet/puppet/modules/beanstalkd/manifests/init.pp

125 lines
3.7 KiB
Puppet

# usage:
#
# beanstalkd::config { name:
# listenaddress => '0.0.0.0',
# listenport => '13000',
# maxjobsize => '65535',
# maxconnections => '1024',
# binlogdir => '/var/lib/beanstalkd/binlog',
# binlogfsync => undef,
# binlogsize => '10485760',
# ensure => 'running', # running, stopped, absent
# packageversion => 'latest', # latest, present, or specific version
# packagename => undef, # override package name
# servicename => undef # override service name
# }
define beanstalkd::config ( # name
$listenaddress = '0.0.0.0',
$listenport = '13000',
$maxjobsize = '65535',
$maxconnections = '1024', # results in open file limit
$binlogdir = '/var/lib/beanstalkd/binlog', # set empty ( '' ) to disable binlog
$binlogfsync = undef, # unset = no explicit fsync
$binlogsize = '10485760',
#
$ensure = 'running', # running, stopped, absent
$packageversion = 'latest', # latest, present, or specific version
$packagename = undef, # got your own custom package? override the default name/service here.
$servicename = undef
) {
case $::operatingsystem {
ubuntu, debian: {
$defaultpackagename = 'beanstalkd'
$defaultservicename = 'beanstalkd'
$user = 'beanstalkd'
$configfile = '/etc/default/beanstalkd'
$configtemplate = "${module_name}/debian/beanstalkd_default.erb" # please create me!
$hasstatus = 'true'
$restart = '/etc/init.d/beanstalkd restart'
}
centos, redhat: {
$defaultpackagename = 'beanstalkd'
$defaultservicename = 'beanstalkd'
$user = 'beanstalkd'
$configfile = '/etc/sysconfig/beanstalkd'
$configtemplate = "${module_name}/redhat/beanstalkd_sysconfig.erb"
$hasstatus = 'true'
$restart = '/etc/init.d/beanstalkd restart'
}
# TODO: add more OS support!
default: {
fail("ERROR [${module_name}]: I don't know how to manage this OS: ${::operatingsystem}")
}
}
# simply the users experience for running/stopped/absent, and use ensure to cover those bases
case $ensure {
absent: {
$ourpackageversion = 'absent'
$serviceenable = 'false'
$serviceensure = 'stopped'
$fileensure = 'absent'
}
running: {
$serviceenable = 'true'
$serviceensure = 'running'
$fileensure = 'present'
}
stopped: {
$serviceenable = 'false'
$serviceensure = 'stopped'
$fileensure = 'present'
}
default: {
fail("ERROR [${module_name}]: enable must be one of: running stopped absent")
}
}
# for packageversion, use what's configured unless we're set (which should only be in the absent case..)
if ! $ourpackageversion {
$ourpackageversion = $packageversion
}
# for service and package name - if we've specified one, use it. else use the default
if $packagename == undef {
$ourpackagename = $defaultpackagename
} else {
$ourpackagename = $packagename
}
if $servicename == undef {
$ourservicename = $defaultservicename
} else {
$ourservicename = $servicename
}
package { $ourpackagename:
ensure => $ourpackageversion
}
service { $ourservicename:
enable => $serviceenable,
ensure => $serviceensure,
hasstatus => $hasstatus,
restart => $restart,
subscribe => [
Package[$ourpackagename],
File[$configfile]
],
}
file { $configfile:
content => template($configtemplate),
owner => 'root',
group => 'root',
mode => 0644,
ensure => $fileensure,
require => Package[$ourpackagename],
}
}