diff --git a/ldap/manifests/init.pp b/ldap/manifests/init.pp index 220ed3f..ac90b62 100644 --- a/ldap/manifests/init.pp +++ b/ldap/manifests/init.pp @@ -611,6 +611,9 @@ class ldap::server { # Password for uid=replicator,cn=config,${name} user on master. # Only needed for slave databases. # +# $rid: +# Replica ID. Must be unique per replica per database. +# # $moduleoptions: # Options for overlay modules. # @@ -620,10 +623,16 @@ class ldap::server { # moduleoptions => [ "smbkrb5pwd-enable=samba", ] # } # -define ldap::server::database($aclsource = "", $master = "", $syncpw = "", $moduleoptions = []) { +define ldap::server::database($aclsource = "", $master = "", $syncpw = "", $rid = "", $moduleoptions = []) { include ldap::server + if $rid == "" { + $rid_real = fqdn_rand(999) + } else { + $rid_real = $rid + } + file { "${ldap::server::config}/slapd.conf.d/db.${name}.conf": ensure => present, content => template("ldap/slapd-database.conf.erb"), diff --git a/ldap/templates/slapd-database.conf.erb b/ldap/templates/slapd-database.conf.erb index 32d4125..bea1fb8 100644 --- a/ldap/templates/slapd-database.conf.erb +++ b/ldap/templates/slapd-database.conf.erb @@ -29,14 +29,14 @@ overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100 -# The database directory MUST exist prior to running slapd AND +# The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /srv/ldap/<%= name %> <% if master != "" -%> # replication -syncrepl rid=2 +syncrepl rid=<%= rid_real %> provider=<%= master %> type=refreshAndPersist retry="10 10 60 +"