Migration OpenLDAP 2.3 to 2.4¶
Current LDAP servers are CentOS 5.4 and OpenLDAP 2.3 with slapd.conf. I will replace these as Ubuntu 12.04 and OpenLDAP 2.4 with slapd-config. I write notes so I tested the migration.
System envrironment¶
Current is like this.

New will be next.

Step of migration is next.
- Prepare a new master as slave of current 

- Change a new master as slave to master 

- Prepare a new slave 

- Stop current LDAPs 

sammary of setting up¶
I tried to convert with slaptest. slaptest is needed to convert custom schema to ldif. But this method has next failures.
- Additional schemas are not included 
- Custom and additiona modules are not loaded 
- Database setting is not converted all 
- Access control is not converted 
- Global settings as LogLevel and TLS Certification etc are not converted 
- Overlay as like ppolicy and syncrepl etc are not converted 
In other words, it means almost useless with slaptest, except of converting custom schema to LDIF. So I basically have set up using ldapvi.
Install packages¶
I had installed next packages.
- slapd 
- ldap-utils 
- ldapvi 
- nslcd 
Debconf asked these parameters when some packages installed. Second level items are set up values this time.
slapd¶
- Administrator password 
- Confirm password 
nslcd¶
- LDAP server URI 
- LDAP server search base - dc=example,dc=org 
 
- Check server’s SSL vertificatte - never 
 
Convert additional schema to LDIF¶
I converted additional schema to LDIF with slaptest after I installed slapd. I made temporary directory and copying files as slapd.conf, schema files as local.schema, sudo.schema, openssh-lpk.schema from current slave server of CentOS5.4.
$ sudo service slapd stop
$ cd /tmp
$ mkdir -p slapd.d/cn\=config/cn\=schema
$ cp -i slapd.conf .
$ cp -i local.schema sudo.schema openssh-lpk.schema slapd.d/cn\=config/cn\=schema/
$ sudo slaptest -f slapd.conf -F /tmp/slapd.d/
$ cd /tmp/slapd.d/cn\=config/cn\=schema
$ sudo mv -i cn\=\{4\}sudo.ldif sudo.ldif
$ sudo mv -i cn\=\{6\}local.ldif local.ldif
$ sudo mv -i cn\=\{7\}openssh-lpk.ldif openssh-lpk.ldif
Don’t forget to delete last 9 lines of each generated LDIF files.
I copied certification and private key files from current slave server. For example, it is as follows.
- /etc/ca-certificates/myserver.key 
- /etc/ca-certificates/myserver.crt 
Using ldapvi¶
ldapvi is “is an interactive LDAP client for Unix terminals. Using it, you can update LDAP entries with a text editor”. Debian package name is the same.
For example of changing it is as follows.
$ sudo ldapvi -Y EXTERNAL -h ldapi:// -b cn=config olcDatabase={1}hdb olcRootDN
----
0 olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=nodomain       # <- before
olcRootDN: cn=admin,dc=example,dc=org # <- after
----
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
      1 entry read
add: 0, rename: 0, modify: 1, delete: 0
Action? [yYqQvVebB*rsf+?] y
Done.
Action of ldapvi are follows:
- y commit changes 
- e open editor again 
- Y commit, ignoring errors 
- v view changes as LDIF change records 
- V view changes as ldapvi change records 
- + rewrite file to include schema comments 
- b show login dialog and rebind 
- B toggle SASL 
- * set SASL mechanism 
- s skip one entry 
- f forget all deletions 
- q save changes as LDIF and quit 
- Q discard changes and quit 
see also ldapvi User Manual .
Detail of Setting up as slave using ldapvi will be posted next time.