2009/10/12

OpenLDAP 2.4のslapd.d構成と少し格闘

backupを取ろうとした矢先に外付けHDDのVMWareイメージが全滅しました。 まぁWindowsの再導入とか面倒なだけで、重要な情報はなかったから良いのですが…。
そうはいっても、いままでの試行錯誤の経過を全部失なってしまって少し傷心気味です。

さてLPIC v3の対策とLDAPの復習を兼ねてOpenLDAP v2.4に手を出してみました。 まっさらになったvmwareディレクトリの中にUbuntu 8.04 LTS x86_64版のイメージを作って、 そこを元にTeamを組んでCloneでVMを増やしてみました。

OpenLDAPはapt-getではなく、最新版のopenldap-2.4.19.tgzを持ってきています。 v2.2の経験しかなかったので、いつの間にかslapd.confを使うのは時代遅れっぽいし、LDBMがabsoluteになってBDBがデフォルトになっていたり、戸惑う事ばかりです。JFにあるLDAP HOWTOは完全に古い情報になってしまいましたね…。

テスト対策という意味では、v2.3ぐらいで遊んだ方が良さそうでしたが、まぁそれはおもしろくないので、v2.4の世界を堪能してみる事にしてみました。 LDAPはDB同様に入れ物の話しだから、おもしろいデータをネタにしないと、昔のIBM Secureway Directory Serverのトラウマ再びという感じです。今はTivoli Directory Serverか…。
とりあえずデータの件は置いておくことにします。

LPI Level3の問題集をやってみた

OpenLDAPに手を出したきっかけは、LPICの問題集をやってみたところ微妙にわからないところがあったからでした。Sync LDAP構成って何ですか、と。

レプリカの構成自体は参考書の説明の通りで、すぐに動いたんですよね。

## producer側
overlay    syncprov
syncprov-sessionlog    1000
index    entryCSN,entryUUID  eq

## consumer側
syncrepl rid=1
  provider=ldap://10.0.0.2
  type=refreshAndPersist
  bindmethod=simple
  binddn="cn=Manager,dc=example,dc=org"
  credentials=hiddenpasswordstring
  searchbase="dc=example,dc=org"

でもLPIC日本支部のWebサイトにある問題例をみるとproducer側では"syncprov-checkpoint"を設定する事となっています。本家の説明を読むと次のように書かれています。

  • indexを付けたentryCSNはsyncprov-checkpoint
  • entryUUIDはsyncprov-sessionlog

問題集に載っていた例だとsyncprov-checkpointも付けないとindexでentryCSNを付けてる意味がないよね、とか、いろいろミスマッチが楽しめます。

やっぱり確実な資料は配布元の「OpenLDAP Software 2.4 Administrator's Guide」ですかね。

2009/11/10追記:ちなみに使っていた問題集はインプレスの「徹底攻略 LPI問題集 Level 3 [301/302] 対応」です。
正誤表があるかと思いましたが、ないようですね。

slapd.d構成

OpenLDAP Software v2.4 Administrator's Guideでは、中途半端な説明のままslapd.confは時代遅れになりつつあり、これからはslapd.dディレクトリに構成情報を入れるのだと解説が始まります。

実際にはどうやって使えばいいか、あまり説明はありません。
デフォルト構成では、最初に /usr/local/etc/openldap/slapd.conf を使う事になっているので、 いろいろ手順が必要になります。

  1. slapd.confに"database config"エントリを作成して、rootDN(cn=admin,cn=config),rootPWディレクティブを設定する
  2. /usr/local/etc/openldap/slapd.d ディレクトリを作成
  3. slapdのオプションで"-f slapd.conf -F slapd.d"を付けて、slapd.confの内容をslapd.d以下にコピーする
  4. $ sudo skill slapdなどでslapdを停止する
  5. $ sudo /usr/local/libexec/slapdなどで起動する

しかし問題はたくさん

これで slapd.d を使う事ができるかと思いきや、再起動前は$ ldapsearch -x -b cn=config -W -D cn=admin,cn=configが動いていたのに、オプションを除いて起動した後は、同じ事ができなくなってしまいました。

.../slapd.d/cn=config/olcDatabase={0}config.ldifを直接眺めていると、olcRootDN, olcRootPW設定が記録されていませんでした。うーーん、困ってしまった。

結局のところ、再びslapdを"-f slapd.conf -F slapd.d"を付きで起動して、次のようなldifを準備してみました。

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,cn=config
-
replace: olcRootPW
olcRootPW: hiddenpasswordstring

これをldapmodifyを使って、サクっとアップデート。$ ldapmodify -x -W -D cn=admin,cn=config -f yourfilename.ldif ぐらいかな。

なんか途中で試行錯誤したのが悪かったのかな…。明日スナップショットを取ったところまで戻って最初から手順を遣り直してみよう…。

0 件のコメント: