Inicializando un directorio OpenLDAP 2.4


Uno de los cambios que trae FedoraCore 12 es OpenLDAP 2.4. Esta versión trae entre otros cambios, la obligatoriedad de usar el backend de configuración dinámica. Los que estábamos acostumbrados a usar toda la configuración de nuestros servidores OpenLDAP en /etc/openldap/slapd.conf, este cambio nos pilla un poco desprevenidos. Por suerte la gente de OpenLDAP había contemplado esto y nos facilita la migración.
Si queremos migrar una configuración de OpenLDAP anterior a 2.4, a esta nueva versión, podemos seguir la siguiente secuencia de pasos:

  1. Hacer un backup de la configuración por defecto que trae el nuevo servicio 2.4
    mv /etc/openldap /etc/openldap_original_2.4
  2. Copiar la configuración del OpenLDAP anterior a /etc/openldap.
  3. Migrar la configuración del antiguo servicio a la versión 2.4, en un directorio temporal:
    mkdir /tmp/export
    slaptest -f /etc/openldap/slapd.conf -F /tmp/export/
  4. Instalar la nueva configuración
    mkdir -m 700 /etc/openldap/slapd.d
    cp -R /tmp/export/* /etc/openldap/slapd.d/
  5. Editar el fichero cn=config para editar /etc/openldap/slapd.d
  6. Fijar el login y contraseña del usuario que podrá modificar dinámicamente la configuración. Para ello, editar el fichero /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif para añadir las siguientes líneas:
    olcRootDN: cn=admin,cn=config
    olcRootPW: {SSHA}pT8zKlqhV8dieALrkzwAiK8KdoxNV5m
    La contraseña encriptada la podemos obtener ejecutando el comando slappasswd.
  7. Copiar la configuración del monitor de OpenLDAP, de la configuración original que habíamos movido.
    export FILE=/etc/openldap_original_2.4/slapd.d

    cp $FILE/cn=config/olcDatabase\=\{2\}monitor.ldif \
    /etc/openldap/slapd.d/cn=config/
  8. Hacer copia de seguridad del directorio de la base de datos del directorio y preparar el directorio para inicializar el nuevo directorio:
    mv /var/lib/ldap /var/lib/ldap_original
    mkdir -m 700 /var/lib/ldap
    cp /var/lib/ldap_original/DB_CONFIG /var/lib/ldap/
  9. A partir de un backup del antiguo servidor (hecha con slapcat por ejemplo), preparar un fichero ldif básico con donde se cree la raíz del directorio, y las ramas princiaples. Lo añadiremos con el comando slapadd:
    slapadd -l /tmp/estructura_inicial.ldif 
  10. Cambiar los permisos de la base de datos del LDAP, y del directorio de configuración e iniciar el demonio de LDAP, mediante los siguientes comandos:
    chown -R ldap.ldap /var/lib/ldap /etc/openldap
    /etc/init.d/slapd start
  11. Restaurar la copia de seguridad en el directorio que acabamos de crear...
    ldapadd -x -D "cn=admin,ou=XXX,o=carm,c=es" -w CLAVE \
    -f copia_seguridad.ldif
  12. Recuperar la base de datos del directorio y reparar
    /etc/init.d/slapd stop

    slapindex
    slapd_db_recover -h /var/lib/ldap
    slapindex

    chown ldap.ldap -R /var/lib/ldap
    /etc/init.d/slapd start

Y ya tendremos nuestro directorio funcionado. :)

La imagen la he sacado del album de JPhilipson en flickr

2 comentarios:

HN dijo...

Hola! tengo una base ldap que levanta mucha info a memoria... a pesar de que he borrado la mitad de su informacion.
Existe algun comando de mantenimiento para reorganizar / reindexar los bloques de la BD?

Ignacio Barrancos dijo...

Para mejorar el inicio, comprueba que tengas los mínimos índices posibles configurados en slapd.conf. Evita en la medida de lo posible índices sobre tipos de datos genéricos como sn, givenName.

Luego para el servicio y ejecuta el comando: slapindex -q -f FICHERO_DE_CONFIGURACION

Puedes hacer varias pruebas con el comando "time" para ver qué impacto tiene la inclusión/exclusión de índices en la configuración, sobre el tiempo que tarda slapindex.

Este comando recrea todos los índices de la base de datos.