Installing custom ldap schema 6.0: Difference between revisions

No edit summary
No edit summary
Line 27: Line 27:
   cn={0}core.ldif  cn={1}cosine.ldif  cn={2}inetorgperson.ldif  cn={3}samba.ldif
   cn={0}core.ldif  cn={1}cosine.ldif  cn={2}inetorgperson.ldif  cn={3}samba.ldif


As you can see, there is now a samba.ldif file, which is what has been converted from the Samba schema file.  The {#} format indicates the load order of the files in the cn=schema directory.  I.e., cn={3}samba.ldif would be the fourth file loaded.  However, ZCS itself already ships with a number of files to be loaded in this directory, so we'll need to renumber the cn={3}samba.ldif file.  Zimbra reserves the first 10 slots (cn={0}... to cn=(9)) for internal use.  OpenLDAP will operate correctly even if the entire load sequence is fully populated (i.e., if it goes from cn={4} to cn={10} with no schema in between). So the cn={3}samba.ldif file will need to be moved out of the ZCS reserved range.
As you can see, there is now a samba.ldif file, which is what has been converted from the Samba schema file.  The {#} format indicates the load order of the files in the cn=schema directory.  I.e., cn={3}samba.ldif would be the fourth file loaded.  However, ZCS itself already ships with a number of files to be loaded in this directory, so we'll need to renumber the cn={3}samba.ldif file.  Zimbra reserves the first 10 slots (cn={0}... to cn=(9)) for internal use.  OpenLDAP will operate correctly even if the entire load sequence is fully populated (i.e., if it goes from cn={4} to cn={10} with no schema in between).
 
The cn={3}samba.ldif file will need to be moved out of the ZCS reserved range given the above notes.  To do this, we need to rename it and then modify it.  So:
 
  mv cn\=\{3\}samba.ldif cn\=\{10\}samba.ldif
 
The modify it so that the following lines are changed from:
 
  dn: cn={3}samba
  objectClass: olcSchemaConfig
  cn: {3}samba
 
to
 
  dn: cn={10}samba
  objectClass: olcSchemaConfig
  cn: {10}samba
 
To finish, we need to copy the new file in to the ZCS OpenLDAP schema directory, as the zimbra user:
 
  cp //tmp/ldap/cn\=config/cn\=schema/cn\=\{10\}samba.ldif /opt/zimbra/data/ldap/config/cn\=config/cn\=schema
  ldap stop
  ldap start
 
Done!

Revision as of 19:52, 26 May 2009

When extending ZCS, it is sometimes desirable to add additional LDAP schema to the OpenLDAP server shipped with ZCS. Starting with the 6.0 release, the new config backend is used, which means that the traditional *.schema files are no longer in play. Instead, LDIF-based versions of the old schema files are used by the new config backend. This means that traditional "schema" files need to be converted to the new LDIF format for ZCS to be able to use them. Fortunately, a utility to do this conversion is shipped with the ZCS OpenLDAP build, and the conversion process is fairly trivial. It consists of creating a temporary configuration file to load the old schema, and specifying a path to write out the new file, using the slaptest binary to do the conversion. Depending on the schema file needing conversion, it may be necessary to load additional schema files as part of the process.

For example, to convert the Samba 3.3 schema into an LDIF-format for use with ZCS, one would do the following:

 mkdir -p /tmp/ldap/schema
 cd /tmp/ldap
 cp /path/to/samba.schema /tmp/ldap/schema

Create a file called "test.conf" with the following contents

 include /opt/zimbra/openldap/etc/openldap/schema/core.schema
 include /opt/zimbra/openldap/etc/openldap/schema/cosine.schema
 include /opt/zimbra/openldap/etc/openldap/schema/inetorgperson.schema
 include /tmp/ldap/schema/samba.schema

Then execute

 /opt/zimbra/openldap/sbin/slaptest -f /tmp/ldap/test.conf -F /tmp/ldap

This will create a new "cn=config" directory in /tmp/ldap. If you examine it's contents, you'll see:

 ls cn\=config
 cn=schema  cn=schema.ldif  olcDatabase={0}config.ldif  olcDatabase={-1}frontend.ldif

Note the cn=schema directory. This directory will contain the converted files, so lets go there:

 cd cn\=config/cn\=schema
 ls
 cn={0}core.ldif  cn={1}cosine.ldif  cn={2}inetorgperson.ldif  cn={3}samba.ldif

As you can see, there is now a samba.ldif file, which is what has been converted from the Samba schema file. The {#} format indicates the load order of the files in the cn=schema directory. I.e., cn={3}samba.ldif would be the fourth file loaded. However, ZCS itself already ships with a number of files to be loaded in this directory, so we'll need to renumber the cn={3}samba.ldif file. Zimbra reserves the first 10 slots (cn={0}... to cn=(9)) for internal use. OpenLDAP will operate correctly even if the entire load sequence is fully populated (i.e., if it goes from cn={4} to cn={10} with no schema in between).

The cn={3}samba.ldif file will need to be moved out of the ZCS reserved range given the above notes. To do this, we need to rename it and then modify it. So:

 mv cn\=\{3\}samba.ldif cn\=\{10\}samba.ldif

The modify it so that the following lines are changed from:

 dn: cn={3}samba
 objectClass: olcSchemaConfig
 cn: {3}samba

to

 dn: cn={10}samba
 objectClass: olcSchemaConfig
 cn: {10}samba

To finish, we need to copy the new file in to the ZCS OpenLDAP schema directory, as the zimbra user:

 cp //tmp/ldap/cn\=config/cn\=schema/cn\=\{10\}samba.ldif /opt/zimbra/data/ldap/config/cn\=config/cn\=schema
 ldap stop
 ldap start

Done!

Jump to: navigation, search