125 lines
3.7 KiB
Puppet
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],
|
|
}
|
|
|
|
}
|