web-dev-qa-db-fra.com

Comment cloner une base de données OpenLDAP

Je sais que cela ressemble plus à une question de défaut de serveur qu'à une question de stackoverflow, mais comme le défaut de serveur n'est pas encore activé, je vais ici:

Je suis censé déplacer une application d'un serveur redhat à un autre, et sans très bonne connaissance du fonctionnement interne de l'application, comment déplacer la base de données OpenLDAP d'une machine à l'autre, avec des schémas et tout.

Quels fichiers dois-je copier? Je pense que la configuration est assez standard.

37
elzapp

Le problème avec SourceRebels réponse est que slapcat(8) ne garantit pas que les données sont ordonnées pour ldapadd(1)/ldapmodify(1). Depuis la page de manuel:

. (1) sans avoir été réorganisé au préalable. 

De plus, l'utilisation d'un outil qui utilise les fichiers principaux pour vider la base de données, puis l'utilisation d'un outil qui charge le ldif via le protocole ldap n'est pas très cohérente.

Je suggère d'utiliser une combinaison de slapcat(8)/slapadd(8) [~ # ~] ou [~ # ~] ldapsearch(1)/ldapmodify(1). Ma préférence irait à ce dernier car il n'a pas besoin d'un accès Shell au serveur LDAP ou d'un déplacement de fichiers.

Par exemple, vider la base de données d'un serveur maître sous dc = master, dc = com et la charger dans un serveur de sauvegarde

 $ ldapsearch -Wx -D "cn = admin_master, dc = master, dc = com" -b "dc = master, dc = com" -H ldap: //my.master.Host -LLL> ldap_dump -20100525-1.ldif 
 $ Ldapadd -Wx -D "cn = admin_backup, dc = backup, dc = com" -H ldap: //my.backup.Host -f ldap_dump-20100525-1.ldif 

Le drapeau -W ci-dessus vous invite à saisir le mot de passe admin_master ldap, car nous redirigeons la sortie vers un fichier que vous ne verrez pas l'invite - juste une ligne vide. Allez-y et tapez votre mot de passe ldap admin_master et cela fonctionnera. La première ligne de votre fichier de sortie devra être supprimée (Entrez le mot de passe LDAP :) avant d'exécuter ldapadd.

Dernier indice, ldapadd(1) est un lien dur vers ldapmodify(1) avec le -a (ajouter) est activé.

43
sberder

ldapsearch et ldapadd ne sont pas nécessairement les meilleurs outils pour cloner votre base de données LDAP. slapcat et slapadd sont de bien meilleures options.

Exportez votre base de données avec slapcat:

slapcat > ldif

Importez la base de données avec slapadd (assurez-vous que le serveur LDAP est arrêté):

slapadd -l ldif
16
Joel

Quelques rendez-vous:

  • Enregistrez vos schémas personnalisés et définitions de classes d'objets sur votre nouveau serveur. Vous pouvez rechercher vos fichiers inclus sur slapd.conf pour l'obtenir, par exemple (cela fait partie de mon slapd.conf):

    inclure /etc/ldap/schema/core.schema

  • Incluez vos schémas et classes d'objets personnalisés dans votre nouvelle installation openLDAP.

  • Utilisez la commande slapcat pour exporter votre arborescence LDAP complète vers un ou plusieurs fichiers ldif .

  • Utilisez ldapadd pour importer les fichiers ldif dans votre nouvelle installation LDAP.

8
sourcerebels

Je préfère copier la base de données via le protocole:

assurez-vous tout d'abord que vous disposez des mêmes schémas sur les deux serveurs.

-vider la base de données avec ldapsearch:
ldapsearch -LLL -Wx -D "cn = admin, dc = domain" -b "dc = domain"> domain.ldif

-et l'importer sur le nouveau serveur:
ldapmodify -Wx -D "cn = admin, dc = domain" -a -f domain.ldif

en ligne:
ldapsearch -LLL -Wx -D "cn = admin, dc = domaine" -b "dc = domaine" | ldapmodify -w pass -x -D "cn = admin, dc = domain" -a

En utilisant les commandes bin/ldap *, vous parlez directement avec le serveur tout en utilisant les commandes bin/slap *, vous traitez avec les fichiers backend

6
Vish

Merci, Vish. A fonctionné comme un charme! J'ai édité la commande:

ldapsearch -z max -LLL -Wx -D "cn=Manager,dc=domain,dc=fr" -b "dc=domain,dc=fr" >/tmp/save.ldif

ldapmodify -c -Wx -D "cn=Manager,dc=domain,dc=fr" -a -f /tmp/save.ldif

Je viens d'ajouter le -z max pour éviter la limitation de taille et le -c pour continuer même si le domaine cible existe déjà (mon cas).

2
Natan

(Pas assez de réputation pour écrire un commentaire ...)

Ldapsearch ouvre une connexion au serveur LDAP. Au lieu de cela, Slapcat accède directement à la base de données, ce qui signifie que les listes de contrôle d'accès, les limites de temps et de taille et les autres sous-produits de la connexion LDAP ne sont pas évalués et ne modifieront donc pas les données. (Matt Butcher, "Maîtriser OpenLDAP")

2
O.Colombo