I migrated a large NIS environment to LDAP (with
RFC2307) about a year ago. Because of the large number of servers and high
reliance on NIS I needed to run LDAP and NIS in parallel, so I developed a
method sync'ing LDAP from NIS every time an NIS update was made.
This method combined modified versions of some of the
migration scripts (see /usr/share/openldap/migration/) that are provided to load
LDAP from NIS with a couple of scripts I found on the net called ldifsort.pl and
ldifdiff.pl, which allowed me to:
1) dump current NIS data out into an LDIF file for each NIS
source file
2) dump current LDAP data into an LDIF file for each
source
3) do a sort/diff between the NIS data and the
LDAP data
4) update the LDAP database with
differences
This worked very well, and we ran NIS and LDAP in
parallel for several months. I then developed another process for
maintaining LDAP data in a similar fashion to NIS, where we use LDIF files as
the "master" copy, and update changes into LDAP:
1) backup master file (for example,
netgroup.ldif)
2) make edits to master file
3) dump current
LDAP data to temporary LDIF file
4) do a sort/diff between the data in the file
and the LDAP data
5) update the LDAP database with the
difference
*Note - this method won't work for passwd because users can
change their own passwords - in this case, we treat LDAP as the master, but we
still dump it to a file for modification by admins.
I find that this has some key advantages over maintaining
the data directly in the database (where we have a staff of about 40 people with
access to update some or all LDAP data):
1) We can add comments to the master file. This allows
us to track modification history, which is important to us
2) We always have the master files to fall back
on
3) We can generate/maintain alternate NIS maps that LDAP
doesn't maintain (netgroup.byhost, netgroup.byuser, passwd.byuid,
etc)
I should also note that we migrated primarily because we were hitting size limitations in NIS that could not worked around. We have hundreds of scripts that use ypmatch/ypcat
commands and they continue to use them because I also wrote a ypmatch/ypcat
replacement script that converts the syntax to LDAP, queries LDAP,
then converts the results back to NIS
format.
I don't know if this helps you or not, but scripting
can get you around a lot of cryptic ldap command
syntax...
Kevin
I wonder what most people use for central authentication, i'm replacing an
NIS based system and was looking for a more elegant way than having to use
cryptic ldapadd commands with ldiff files.