今日やること
今日はOpenAMのバックアップとリストアについてです。
先日は監査ログという、少し運用に近い範囲のお話を取り上げましたので、もう少し続けてみたいと思います。
OpenAMのデータストア
OpenAMの設定データの格納先はLDAP(あと、ファイルも少々)となっています。ゆえに、本気でOpenAMを冗長構成でセットアップする際には、このLDAPを冗長化したり、分散させたりします。
こんな具合に...
しかし、このAdvent Calendarで使用しているOpenAMは、OpenAMに内蔵されているLDAPをしようしています。
こんな構成です。
よって、本日取り扱うお話としては、このOpenAMに内蔵されているLDAPに対してのオペレーションとなります。
余談ですが、LDAPに設定データを保持するって、今時珍しいですね。きっとSun時代の遺産によるところがあるのでしょうが、何かLDAPであることで嬉しいことってのがあるのでしょうか?どうしてもユーザー情報を格納するデータベースというイメージがあるもので...
バックアップする
では、まずバックアップを取得してみましょう。OpenAMの設定ファイル等が格納されているディレクトリ(本記事では/home/openam/openam/opends/bin/
)以下にLDAPを操作するクライアントコマンドが配置されています。このなかのexport-ldif
コマンドを使用します。
/home/openam/openam/opends/bin/export-ldif \
--port 4444 \
--hostname iam.example.com \
--bindDN "cn=Directory Manager" \
--bindPassword password \
--backendID userRoot \
--includeBranch dc=openam,dc=forgerock,dc=org \
--excludeBranch ou=tokens,dc=openam,dc=forgerock,dc=org \
--ldifFile /tmp/backup-`date -u +%F-%m-%s`.ldif \
--start 0 \
--trustAll
コマンド実行後、下記のファイルができあがります。
ll /tmp/*.ldif
-rw------- 1 openam openam 2131287 Dec 17 00:43 /tmp/backup-2016-12-16-12-1481903027.ldif
お気づきかもしれませんが、このコマンドはOpenAMを停止することなく、実行することができます。
リストアする
リストアは同ディレクトリ以下にldapmodify
が配置されているので、それを使用します。ただし、変更内容ごとにChangeType
をつけないと、正常にロードされません。
基本的な使い方としては前回バックアップ取得時との差分を検出し、差分のみを適用(もちろんChangeTypeもつける)した状態のLDIFを作成してからldapmodify
するみたいです。んー、めんどうですねー。
もろともバックアップ・リストア
もし、停止が許容されるのであれば、ディレクトリもろともバックアップをとっていいみたいです。
cd /home/openam/
zip \
--recurse-paths /tmp/backup-`date -u +i5%F-%m-%S`.zip \
openam .openamcfg/ \
--exclude openam/openam/debug/* openam/openam/log/* \
openam/openam/stats* openam/opends/logs/* \
openam/opends/locks/*
リストアするときは、再度同じディレクトリに配置するだけですね~。
まとめ
忘年会ばっかで書く時間がとれなくなってきたぞ~(´ρ`)
まとめは
- OpenAMはLDAPに設定情報を保持している
- LDIF形式で設定情報を保持できるけど、リストアがめんどくさい
- もろともバックアップはシステムの停止が必要だけど、簡単である。
休日に書き溜めせねば...
ばい!