Разработчикам часто требуется добавить новые базы в LDAP.
LDAP настроен через OLC (cn=config
).
Что бы не отвлекаться – на скорую руку был написан такой скрипт:
#!/usr/bin/env bash DB_DIR="/var/lib/ldap" M_ROOT="cn=root,cn=config" M_ROOT_PW="p@ssw0rd" TM_LDIF="/tmp/tmldif.ldif" TM_LDIF_TOP="/tmp/toptemp.ldif" answer () { while read response; do echo case $response in [yY][eE][sS]|[yY]) return 0 break ;; [nN][oO]|[nN]) return 1 break ;; *) printf "Please, enter Y(yes) or N(no)! " esac done } printf "n" read -p "Please, enter new database name (example: autodev1): " db_name read -s -p "Please, enter this database root password: " root_pw create_pw () { h_root_pw=$(slappasswd -s $1 -h {MD5} | base64) } create_pw $root_pw text="dn: olcDatabase=bdb,cn=config objectClass: olcBdbConfig olcDatabase: bdb olcDbDirectory: $DB_DIR/$db_name olcSuffix: dc=$db_name olcRootDN: cn=root,dc=$db_name olcRootPW:: $h_root_pw" printf "nnNew database will be created with data:nn$textnnIs it OK? [y/n] " answer && printf "Starting database creation.n" || { printf "Exit.nn"; exit 0; } printf "nMkdir $DB_DIR/$db_name... " if mkdir $DB_DIR/$db_name; then cp /var/lib/ldap/autobuild1/DB_CONFIG $DB_DIR/$db_name chown -R ldap:ldap $DB_DIR/$db_name printf "done.nn" else printf "nERROR! Can't create directory.n.Exit." exit 2 fi printf "Creating temporary lfid file... " cat > $TM_LDIF <<EOL $text EOL cat > $TM_LDIF_TOP <<EOL dn: dc=$db_name objectClass: top objectClass: dcObject objectClass: organization dc: $db_name o: DevLDAP description: Testing LDAP DIT for DEV EOL printf "done.n" printf "nAdding new DIT to LDAP... " ldapadd -x -D "$M_ROOT" -w"$M_ROOT_PW" -f $TM_LDIF ldapadd -x -D "cn=root,dc=$db_name" -w"$root_pw" -f $TM_LDIF_TOP /etc/init.d/slapd restart
И его работа:
# ./create_DIT.sh Please, enter new database name (example: autodev1): autodev8 Please, enter this database root password: New database will be created with data: dn: olcDatabase=bdb,cn=config objectClass: olcBdbConfig olcDatabase: bdb olcDbDirectory: /var/lib/ldap/autodev8 olcSuffix: dc=autodev8 olcRootDN: cn=root,dc=autodev8 olcRootPW:: e01ENX1Cc0U5dUsrZll2eEJlOTlrYjBJZk1nPT0K Is it OK? [y/n] y Starting database creation. Mkdir /var/lib/ldap/autodev8... done. Creating temporary lfid file... done. Adding new DIT to LDAP... adding new entry "olcDatabase=bdb,cn=config" adding new entry "dc=autodev8" Stopping slapd: [ OK ] Starting slapd: [ OK ]