Provided by: cdist_7.0.0-5_all bug

NAME

       cdist-type__openldap_server - Setup an openldap(4) server instance

DESCRIPTION

       This type can be used to bootstrap an LDAP environment using openldap as slapd.

       It  bootstraps  the  LDAP  server  with  sane defaults and creates and manages the base DN
       defined by suffix.

REQUIRED PARAMETERS

       manager-dn
              The rootdn to set up in  the  directory.   E.g.  cn=manager,dc=ungleich,dc=ch.  See
              slapd.conf(5).

       manager-password
              The  password for manager-dn in the directory.  This will be used to connect to the
              LDAP server on the first slapd-url with the given manager-dn.

       manager-password-hash
              The password for manager-dn in the directory.  This should be valid for  slapd.conf
              like  {SSHA}qV+mCs3u8Q2sCmUXT4Ybw7MebHTASMyr.   Generate  e.g.  with: slappasswd -s
              weneedgoodsecurity.  See slappasswd(8C), slapd.conf(5).  TODO:  implement  this:  ‐
              http://blog.adamsbros.org/2015/06/09/openldap-ssha-salted-hashes-by-hand/ to derive
              from the manager-password parameter and ensure idempotency (care with  salts).   At
              that point, manager-password-hash should be deprecated and ignored.

       serverid
              The server for the directory.  E.g. dc=ungleich,dc=ch. See slapd.conf(5).

       suffix The suffix for the directory.  E.g. dc=ungleich,dc=ch. See slapd.conf(5).

REQUIRED MULTIPLE PARAMETERS

       slapd-url
              A  URL  for  slapd to listen on.  Pass once for each URL you want to support, e.g.:
              --slapd-url ldaps://my.fqdn/ --slapd-url ldap://my.fqdn/.  The first instance  that
              is  passed  will  be used as the main URL to connect to this LDAP server See the -h
              flag in slapd(8C).

OPTIONAL PARAMETERS

       syncrepl-credentials
              Only has an effect if replicate is set; required in  that  case.   This  secret  is
              shared  amongst  the  hosts  that  will  replicate  the  directory.  Note that each
              replication server needs this  secret  and  it  is  saved  in  plain  text  in  the
              directory.

       syncrepl-searchbase
              Only  has  an effect if replicate is set; required in that case.  The searchbase to
              use for replication.  E.g. dc=ungleich,dc=ch. See slapd.conf(5).

       admin-email
              Passed to cdist-type__letsencrypt_cert; has otherwise no use.   Required  if  using
              __letsencrypt_cert.   Where  to  send  Let's Encrypt emails like "certificate needs
              renewal".

       tls-cipher-suite
              Setting  for  TLSCipherSuite.   Defaults  to  NORMAL  in  a  Debian-like   OS   and
              HIGH:MEDIUM:+SSLv2 on FreeBSD.  See slapd.conf(5).

       tls-cert
              If  defined, __letsencrypt_cert is not used and this must be the path in the remote
              hosts to the  PEM-encoded  TLS  certificate.   Requires:  tls-privkey  and  tls-ca.
              Permissions, existence and renewal of these files are left up to the type's user.

       tls-privkey
              Required  if  tls-cert  is  defined.   Path  in the remote hosts to the PEM-encoded
              private key file.

       tls-ca Required if tls-cert is defined.  Path in the remote hosts to  the  PEM-encoded  CA
              certificate file.

       extra-config
              Custom settings to be added in slapd.conf(5).

OPTIONAL MULTIPLE PARAMETERS

       syncrepl-host
              Only  has  an effect if replicate is set; required in that case.  Set once per host
              that will replicate the directory.

       module LDAP module to  load.  See  slapd.conf(5).  Some  dependencies  might  have  to  be
              installed beforehand. Default value is OS-dependent, see manifest.

       schema Name  of  LDAP schema to load. Must be the name without extension of a .schema file
              in     slapd's     schema     directory     (usually      /etc/slapd/schema      or
              /usr/local/etc/openldap/schema).   Example  value: inetorgperson The type user must
              ensure that the schema file is deployed.  This defaults to a sensible  subset,  for
              details see the type definition.

       description
              The description of the base DN passed in the suffix parameter.  Defaults to Managed
              by cdist, do not edit manually.

BOOLEAN PARAMETERS

       staging
              Passed to cdist-type__letsencrypt_cert;  has  otherwise  no  use.   Obtain  a  test
              certificate from a staging server.

       replicate
              Whether   to  setup  replication  or  not.   If  present  syncrepl-credentials  and
              syncrepl-host are also required.

EXAMPLES

          # Example of a simple server with manual certificate management.
          pki_prefix="/usr/local/etc/pki/realms/ldap.camilion.cloud"
          __openldap_server \
              --manager-dn 'cn=manager,dc=camilion,dc=cloud' \
              --manager-password "foo" \
              --manager-password-hash '{SSHA}foo' \
              --serverid 0 \
              --suffix 'dc=camilion,dc=cloud' \
              --slapd-url 'ldaps://ldap.camilion.cloud' \
              --tls-cert "${pki_prefix}/default.crt" \
              --tls-privkey "${pki_prefix}/default.key" \
              --tls-ca "${pki_prefix}/CA.crt"

          # The created basedn looks as follows:
          #
          # dn: dc=camilion,dc=cloud
          # objectClass: top
          # objectClass: dcObject
          # objectClass: organization
          # o: Managed by cdist, do not edit manually.
          # dc: camilion
          #
          # Do not change it manually, the type will overwrite your changes.

          #
          # Changing to a replicated setup is a simple change to something like:
          #
          # Example for multiple servers with replication and automatic
          # Let's Encrypt certificate management through certbot.
          id=1
          for host in ldap-test1.ungleich.ch ldap-test2.ungleich.ch; do
              echo "__ungleich_ldap \
                  --manager-dn 'cn=manager,dc=ungleich,dc=ch' \
                  --manager-psasword 'foo' \
                  --manager-password-hash '{SSHA}fooo' \
                  --serverid '${id}' \
                  --suffix 'dc=ungleich,dc=ch' \
                  --slapd-url ldap://${host} \
                  --searchbase 'dc=ungleich,dc=ch' \
                  --syncrepl-credentials 'fooo' \
                  --syncrepl-host 'ldap-test1.ungleich.ch' \
                  --syncrepl-host 'ldap-test2.ungleich.ch' \
                  --description 'Ungleich LDAP server'" \
                  --staging \
                  | cdist config -i - -v ${host}
              id=$((id + 1))
          done

          # The created basedn looks as follows:
          #
          # dn: dc=ungleich,dc=ch
          # objectClass: top
          # objectClass: dcObject
          # objectClass: organization
          # o: Ungleich LDAP server
          # dc: ungleich
          #
          # Do not change it manually, the type will overwrite your changes.

SEE ALSO

       cdist-type__letsencrypt_cert(7)

AUTHORS

       ungleich <foss--@--ungleich.ch> Evilham <contact--@--evilham.com>

COPYING

       Copyright (C) 2020 ungleich glarus ag. You can redistribute it and/or modify it under  the
       terms  of  the  GNU  General  Public License as published by the Free Software Foundation,
       either version 3 of the License, or (at your option) any later version.

COPYRIGHT

       ungleich GmbH 2021