informatique:reseau:ldap:upgrade_2.4_vers_2.5

Mise à jour d'OpenLDAP 2.4 en 2.5 (passage à Debian Bookworm)

Cette mise à jour est assez impactante et mieux vaut s'y préparer.

  • Si ce n'est pas déjà fait, faites la migration vers le backend MDB
  • Supprimer les anciennes sauvegardes automatique faites par dpkg : rm -fri /var/backups/slapd-* /var/backups/*.ldapdb
  • Vérifier l'espace disque disponible : la mise à jour va entraîner des sauvegardes automatiques des bases dans /var/backups :
    • les fichiers des bases existantes vont y être déplacés
    • des dumps LDIF vont être créés dans un dossier nommé /var/backups/slapd-[version slapd]

Lancer la mise avec la commande :

apt install --upgrade slapd

Celle-ci va certainement poser problème et il faudra alors apporter les corrections suivantes :

  • suppression des références aux backends BDB & HDB : supprimer le chargement des modules correspondant dans /etc/ldap/slapd.d/cn=config/cn=module{0}.ldif et les fichiers de configuration associés (s'ils sont présent) :
    sed -i '/back_[hb]db$/d' /etc/ldap/slapd.d/cn=config/cn=module{0}.ldif
    rm -i /etc/ldap/slapd.d/cn\=config/olcBackend\=*bdb.ldif /etc/ldap/slapd.d/cn\=config/olcBackend\=*hdb.ldif
  • Module pw-argon2 : Le support des mots de passe argon2 est maintenant intégré dans _slapd core_ : si vous l'utiliser, après mise à jour il faudra :
    sed -i 's/pw-argon2/argon2/' '/etc/ldap/slapd.d/cn=config/cn=module{0}.ldif'
  • Module ppolicy : Le schéma _Ppolicy_ est fourni par le module (plus de schéma externe à charger) : si vous utiliser _ppolicy_, après mise à jour il faudra :
    ppolicy_schema=$( ls /etc/ldap/slapd.d/cn\=config/cn\=schema/cn=*ppolicy.ldif 2> /dev/null )
    if [[ -n "$ppolicy_schema" ]]; then
        rm -i "$ppolicy_schema"
        id=$( sed 's/.*cn={\([0-9]\+\)}.*/\1/' <<< "$ppolicy_schema" )
        while true; do
            (( old_id=id+1 ))
            file=$( ls /etc/ldap/slapd.d/cn\=config/cn\=schema/cn=\{$old_id\}*.ldif 2> /dev/null )
            [[ -z "$file" ]] && break
            sed -i -e "s/^dn: cn={$old_id}/dn: cn={$id}/" -e "s/^cn: {$old_id}/cn: {$id}/" "$file"
            new_file=$( sed "s/cn={$old_id}/cn={$id}/" <<< "$file" )
            mv "$file" "$new_file"
    	(( id++ ))
        done
    else
        echo "Ppolicy schema not found"
    fi
  • Corriger les codes CRC dans la configuration d'OpenLDAP : check_slapdd_crc32 -f
  • Si la mise à jour de paquet à initialement échouée, les bases n'auront pas été restaurées. Il faudra alors :
    DUMP_DIR=$( find /var/backups -type d -name 'slapd-*' )
    for ldif in $DUMP_DIR/*.ldif
    do
        basedn=$( basename "$ldif" | sed 's/\.ldif$//' )
        [[ "$basedn" == "cn=config" ]] && continue
        echo "$basedn"
        slapadd -b "$basedn" -q -l "$ldif"
    done
    chown -R openldap: /var/lib/ldap
  • Vérifier ensuite que la configuration d'OpenLDAP est valide : slaptest
  • Si des problèmes persistes (en dehors des bases introuvables, cf. ci-dessous), corriger les avant de continuer (la doc officielle peux être utile pour cela).
  • Pour finir, relancer le service : service slapd restart
  • supprimer les fichiers laissés par la mise à jour :
    rm -fri /var/backups/slapd-* /var/backups/*.ldapdb
  • Module refint : Les multiples noms d'attributs dans olcRefintAttribute doivent être éclatés dans plusieurs valeurs de l'attribut : c'est non-bloquant, mais ça provoque des warnings. Si vous utilisé à faire après mise à jour via un ldapvi -p config)
  • Module dynlist : Le schéma a quelques peut évolué : l'attribut olcDlAttrSet a été déprécié en faveur de l'attribut olcDynListAttrSet et l'objectClass olcDynamicList en faveur de olcDynListConfig. La rétrocompatibilité est assurée, mais autant faire le changement tout de suite :
    find /etc/ldap/slapd.d/ \
      -type f -name 'olcOverlay=*dynlist.ldif' \
      -exec sed  -e 's/olcDlAttrSet/olcDynListAttrSet/gi' -e 's/olcDynamicList/olcDynListConfig/gi' \{\} \;
  • informatique/reseau/ldap/upgrade_2.4_vers_2.5.txt
  • Dernière modification : 2024/11/12 14:15
  • de bn8