]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/memcached/manifests/init.pp
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / memcached / manifests / init.pp
diff --git a/3rdparty/modules/memcached/manifests/init.pp b/3rdparty/modules/memcached/manifests/init.pp
new file mode 100644 (file)
index 0000000..761efcb
--- /dev/null
@@ -0,0 +1,123 @@
+# == 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,
+    }
+  }
+}