--- /dev/null
+# == Class: memcached
+#
+# Manage memcached
+#
+# == Parameters
+# [* syslog *]
+# Boolean.
+# If true will pipe output to /bin/logger, sends to syslog.
+#
+class memcached (
+ $package_ensure = 'present',
+ $service_manage = true,
+ $logfile = $::memcached::params::logfile,
+ $syslog = false,
+ $pidfile = '/var/run/memcached.pid',
+ $manage_firewall = false,
+ $max_memory = false,
+ $item_size = false,
+ $lock_memory = false,
+ $listen_ip = '0.0.0.0',
+ $tcp_port = 11211,
+ $udp_port = 11211,
+ $user = $::memcached::params::user,
+ $max_connections = '8192',
+ $verbosity = undef,
+ $unix_socket = undef,
+ $install_dev = false,
+ $processorcount = $::processorcount,
+ $service_restart = true,
+ $auto_removal = false,
+ $use_sasl = false,
+ $use_registry = $::memcached::params::use_registry,
+ $registry_key = 'HKLM\System\CurrentControlSet\services\memcached\ImagePath',
+ $large_mem_pages = false
+) inherits memcached::params {
+
+ # validate type and convert string to boolean if necessary
+ if is_string($manage_firewall) {
+ $manage_firewall_bool = str2bool($manage_firewall)
+ } else {
+ $manage_firewall_bool = $manage_firewall
+ }
+ validate_bool($manage_firewall_bool)
+ validate_bool($service_restart)
+ validate_bool($service_manage)
+
+ validate_bool($syslog)
+
+ # Logging to syslog and file are mutually exclusive
+ # Fail if both options are defined
+ if $syslog and str2bool($logfile) {
+ fail 'Define either syslog or logfile as logging destinations but not both.'
+ }
+
+ if $package_ensure == 'absent' {
+ $service_ensure = 'stopped'
+ $service_enable = false
+ } else {
+ $service_ensure = 'running'
+ $service_enable = true
+ }
+
+ package { $memcached::params::package_name:
+ ensure => $package_ensure,
+ provider => $memcached::params::package_provider
+ }
+
+ if $install_dev {
+ package { $memcached::params::dev_package_name:
+ ensure => $package_ensure,
+ require => Package[$memcached::params::package_name]
+ }
+ }
+
+ if $manage_firewall_bool == true {
+ firewall { "100_tcp_${tcp_port}_for_memcached":
+ port => $tcp_port,
+ proto => 'tcp',
+ action => 'accept',
+ }
+
+ firewall { "100_udp_${udp_port}_for_memcached":
+ port => $udp_port,
+ proto => 'udp',
+ action => 'accept',
+ }
+ }
+
+ if $service_restart and $service_manage {
+ $service_notify_real = Service[$memcached::params::service_name]
+ } else {
+ $service_notify_real = undef
+ }
+
+ if ( $memcached::params::config_file ) {
+ file { $memcached::params::config_file:
+ owner => 'root',
+ group => 'root',
+ mode => '0644',
+ content => template($memcached::params::config_tmpl),
+ require => Package[$memcached::params::package_name],
+ notify => $service_notify_real,
+ }
+ }
+
+ if $service_manage {
+ service { $memcached::params::service_name:
+ ensure => $service_ensure,
+ enable => $service_enable,
+ hasrestart => true,
+ hasstatus => $memcached::params::service_hasstatus,
+ }
+ }
+
+ if $use_registry {
+ registry_value{ $registry_key:
+ ensure => 'present',
+ type => 'string',
+ data => template($memcached::params::config_tmpl),
+ notify => $service_notify_real,
+ }
+ }
+}