puppet code class bob_openldap { puppet blank puppet code define server ( puppet code $argsfile = undef, puppet code $bdb_cachesize = '', puppet code $bdb_checkpoint = '', puppet code $bdb_directory = undef, puppet code $bdb_idlcachesize = '', puppet code $bdb_rootdn, puppet code $bdb_rootpw, puppet code $bdb_shm_key = '', puppet code $bdb_suffix, puppet code $conf_path = undef, puppet code $conf_dir = undef, puppet code $enable = false, puppet code $include = [], puppet code $includepath = undef, puppet code $modulepath = '', puppet code $modules = [], puppet code $package = undef, puppet code $pidfile = undef, puppet code $sysconf_path = undef puppet code ) { puppet blank puppet code $resource_name = "bob_openldap_server" puppet blank puppet code if($name != "params") { puppet code fail("${resource_name}: This function is a singleton. Make sure the resource name is 'params'.") puppet code } puppet blank puppet code case $operatingsystem { puppet code Fedora: { puppet code case $operatingsystemrelease { puppet code /^(12|13)$/: { puppet code if(!$argsfile) { $_argsfile = "/var/run/openldap/slapd.args" } puppet code if(!$bdb_directory) { $_bdb_directory = "/var/lib/ldap" } puppet code if(!$conf_path) { $_conf_path = "/etc/openldap/slapd.conf" } puppet code if(!$conf_dir) { $_conf_dir = "/etc/openldap/slapd.d" } puppet code if(!$package) { $_package = ["openldap-servers"] } puppet code if(!$pidfile) { $_pidfile = "/var/run/openldap/slapd.pid" } puppet code if(!$service) { $_service = "slapd" } puppet code if(!$sysconf_path) { $_sysconf_path = "/etc/sysconfig/ldap" } puppet code } puppet code } puppet code } puppet code } puppet blank puppet comment # Presume the OS did not match and because these args are necessary, just puppet comment # bail with an error. puppet code if(!($_argsfile and $_bdb_directory and $_pidfile and $_conf_path and puppet code $_package and $_service and $_sysconf_path and $_conf_dir)) { puppet code fail("${resource_name}: Unsupported operating system: ${operatingsystem} version ${operatingsystemrelease} and you have not setup the args for: argsfile, bdb_directory, conf_dir, conf_path, package, pidfile, sysconf_path and service.") puppet code } puppet blank puppet comment # Fix paths - add forward slashes at the end of strings without them puppet code $_includepath = regsubst($includepath, '([^/])$', '\1/') puppet code $_dbconf_path = "${_bdb_directory}/DB_CONFIG" puppet blank puppet comment # ... puppet code file { puppet code $_conf_path: puppet code content => template("bob_openldap/slapd.conf"), puppet code require => Package[$_package], puppet code owner => "ldap", puppet code group => "root", puppet code mode => "0440", puppet code notify => Service[$_service]; puppet code $_sysconf_path: puppet code content => template("bob_openldap/ldap.sysconf"), puppet code require => Package[$_package], puppet code owner => "root", puppet code group => "root", puppet code mode => "0644"; puppet code $_conf_dir: puppet code force => true, puppet code ensure => absent, puppet code before => Service[$_service]; puppet code $_dbconf_path: puppet code content => "", puppet code notify => Service[$_service]; puppet code } puppet code package { puppet code $_package: puppet code ensure => installed; puppet code } puppet code service { puppet code $_service: puppet code ensure => $enable ? { puppet code true => "running", puppet code false => "stopped" puppet code }, puppet code enable => $enable, puppet code hasstatus => true, puppet code require => [ Package[$_package], File[$_conf_path] ]; puppet code } puppet code } puppet blank puppet code define client ( puppet code $base, puppet code $network_timeout = '', puppet code $path = undef, puppet code $timeout = '', puppet code $binddn = '', puppet code $tls_cacertdir = undef, puppet code $uri puppet code ) { puppet blank puppet code $resource_name = "bob_openldap_client" puppet blank puppet code if($name != "params") { puppet code fail("${resource_name}: This function is a singleton. Make sure the resource name is 'params'.") puppet code } puppet blank puppet code case $operatingsystem { puppet code Fedora: { puppet code case $operatingsystemrelease { puppet code /^(12|13)$/: { puppet code if(!$tls_cacertdir) { $_tls_cacertdir = "/etc/openldap/cacerts" } puppet code if(!$path) { $_path = "/etc/openldap/ldap.conf" } puppet code } puppet code } puppet code } puppet code } puppet blank puppet comment # Presume the OS did not match and because these args are necessary, just puppet comment # bail with an error. puppet code if(!($_tls_cacertdir and $_path)) { puppet code fail("${resource_name}: Unsupported operating system: ${operatingsystem} version ${operatingsystemrelease} and you have not setup the args for: tls_cacertdir, path.") puppet code } puppet blank puppet comment # Fix some vars, ready for templating puppet code $_base = $base puppet code $_binddn = $binddn puppet code $_network_timeout = $network_timeout puppet code $_timeout = $timeout puppet code $_uri = $uri puppet blank puppet code file { puppet code $_path: puppet code content => template("bob_openldap/ldap.conf") puppet code } puppet blank puppet code } puppet blank puppet code }