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