Les méthodes de chargement de l’annuaire
La première méthode consiste à charger l’annuaire LDAP en ligne en utilisant les commandes d’opérations du protocole LDAP. Avec cette méthode dite "online", il suffit de démarrer le service "slapd" et d’ajouter des entrées à l’aide d’un client LDAP en ligne de commande de type ldapadd ou bien par l’intermédiaire d’un navigateur LDAP. Cette méthode est correcte en termes de temps de traitement pour des contenus relativement faibles de quelques centaines ou milliers d’entrées, mais devient inacceptable lorsque l’on atteint des dizaines ou des centaines de milliers d’entrées. Elle n’est donc surtout pas adaptée dans des situations de panne où une restauration des données doit être réalisée dans des délais relativement courts pour minimiser les coûts d’impact liés à l’arrêt de la production.
Ainsi, il faudra s’orienter vers une seconde méthode dite "offline" qui consiste à utiliser des commandes spéciales fournies avec le package "openldap-server" qui permettent de réaliser des chargements (ou création) d’entrées dans des temps beaucoup plus acceptables pour un environnement de production. Cependant, cette méthode nécessite l’arrêt du service LDAP.
Pour résumer, chacune de ces méthodes a ses avantages et ses inconvénients et doit donc être utilisée selon le cas de figure rencontré :
	•	Cas de panne avec restauration totale ou partielle de centaines de milliers de données = Chargement "Hors-ligne (Offline)".
	•	Restauration ou mise à jour de quelques entrées = Chargement "En ligne (Online)".
Dans les deux cas, il faut disposer du suffixe de l’annuaire à charger ainsi que de l’utilisateur de liaison administrateur de l’annuaire "RootDN" qui a la possibilité d’écriture dans l’annuaire LDAP.
Et bien entendu, il faut au préalable constituer le fichier LDIF contenant les entrées à créer dans l’annuaire. Ce fichier sera lu ligne après ligne et devra donc être structuré de façon à ce qu’apparaisse en premier lieu la racine puis les branches et enfin les feuilles de l’arbre représentatif de l’annuaire (DIT).
¬
Par ailleurs, quelle que soit la méthode utilisée, si une entrée est déjà présente dans l’annuaire, alors celle-ci ne sera pas écrasée et la commande s’arrêtera en retournant une erreur du type : ldap_add: Already exists (68).
1. Chargement des données en ligne
Cette méthode peut être réalisée en ligne de commande LDAP de type ldapadd ou ldapmodify, ou bien en mode graphique par l’utilisation d’un navigateur LDAP depuis le serveur LDAP ou un client pendant que l’annuaire LDAP est démarré.
Il suffit donc d’utiliser la commande ldapadd ou ldapmodify avec l’option -a et aussi le fichier LDIF des entrées à charger (fichier entree.ldif en annexe) comme dans l’exemple ci-dessous :
[root@ldap01 openldap]# service slapd status 
slapd (pid  26819) is running... 
[root@ldap01 openldap]# 
ldapadd  -h localhost -D "cn = Manager, dc = exemple, dc = com" 
-w secret -f entree.ldif 
 
ldapmodify -h localhost -D "cn = Manager, dc = exemple, dc = com" 
-w secret -a -f entree.ldif
La même opération peut être réalisée avec un navigateur LDAP tel qu’Apache Directory Studio dont l’installation et l’utilisation ont été abordées au chapitre Installer et configurer un navigateur LDAP.
2. Chargement des données hors ligne
Afin d’utiliser la commande slapadd, il faut tout d’abord s’assurer que le service "slapd" est stoppé.
S’il n’est pas arrêté, le message d’erreur "database already in use" pourrait apparaître :
[root@ldap01 tmp]# slapadd -c -b dc=exemple,dc=com -l entries.ldif 
590320a8 ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif" 
590320a8 ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif" 
590320a8 bdb_db_open: database "dc=exemple,dc=com": database  
already in use. 
590320a8 backend_startup_one (type=bdb,  
suffix="dc=exemple,dc=com"): bi_db_open failed! (-1) 
slap_startup failed
En revanche, voici un exemple lorsque l’opération se déroule correctement :
### Arrêt de ’slapd’ 
[root@ldap01 tmp]# service slapd stop 
Stopping slapd: 
                  [  OK  ] 
### Chargement d’entrées dans le LDAP 
[root@ldap01 tmp]# slapadd -c -b dc=exemple,dc=com -l entries.ldif 
590320be ldif_read_file: checksum error on "/etc/openldap/slapd.
d/cn=config/olcDatabase={0}config.ldif" 
590320be ldif_read_file: checksum error on "/etc/openldap/slapd.
d/cn=config/olcDatabase={1}bdb.ldif" 
590320be bdb_db_open: warning - no DB_CONFIG file found in  
directory /var/lib/ldap: (2). 
Expect poor performance for suffix "dc=exemple,dc=com". 
590320be bdb_monitor_db_open: monitoring disabled; configure  
monitor database to enable 
_#################### 100.00% eta   none elapsed            
none fast!         serPassword: invalid base64 encoding char ( 
Closing DB... 
[root@ldap01 tmp]# 
 
### Puis demarrage du service ’slapd’ 
[root@ldap01 tmp]# service slapd start 
Checking configuration files for slapd:                [WARNING] 
59032130 ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif" 
59032130 ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif" 
config file testing succeeded 
Starting slapd:                                            [  OK  ] 
[root@ldap01 tmp]
Il est maintenant possible de vérifier que toutes les entrées sont chargées dans l’annuaire. La façon la plus simple étant d’utiliser un navigateur LDAP comme dans l’exemple ci-dessous :
¬
Figure 9-1