サーバー構築を「手作業」で行うのは、もう終わりにしましょう。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回は、OpenLDAPと389 Directory Server (389 DS) のアーキテクチャの違いについて解説しました。
「設定が見える安心感」と「商用レベルの堅牢性」に魅力を感じていただけたでしょうか?
今回はいよいよ、実際のインストール作業に入ります。
ただし、画面に出てくる質問に「Yes/No」で答えていくような、初心者向けのインストール方法は教えません。
プロのインフラエンジニアとして、「再現性があり」「自動化可能で」「バージョン管理できる」インストール方法、すなわち IaC (Infrastructure as Code) のアプローチで構築を行います。
先生、やる気満々です!
さっそくVPSにAlmaLinux 9を入れました。
でも、ネットで検索すると setup-ds-admin.pl ってコマンドを使う記事と、dscreate を使う記事が出てきて混乱してます。
どっちが正解なんですか?
コウ君、古い記事に惑わされちゃダメよ。setup-ds-admin.pl はRHEL 7世代までの遺物。
RHEL 8 / 9世代のモダンな389 DSでは、Pythonベースの dscreate コマンドを使うのが正解よ。
そして、対話式(インタラクティブ)モードは使わず、設定ファイル(Infファイル)を読み込ませて一発で構築するのがプロの流儀。
今回は、Webブラウザから管理できる「Cockpit」も一緒に導入して、最強の管理環境を作るわよ!
本記事では、AlmaLinux 9 / Rocky Linux 9 / RHEL 9 を前提に、構成ファイルを用いた389 Directory Serverのサイレントインストール手順と、Web GUI管理ツール「Cockpit」のセットアップ方法を徹底解説します。
🐧 389 Directory Server 完全攻略講座 カリキュラム
- 【第1回】OpenLDAP vs 389 DS。アーキテクチャの違いから学ぶ、次世代LDAPの選定基準
- 【第2回】爆速インストール。構成ファイルによるIaC化とCockpit Web GUIの構築
- 【第3回】CLI管理の革命。dsidmコマンドとJSON出力の活用
- 【第4回】アクセス制御 (ACI) の設計論。ACLとの決定的な違い
- 【第5回】マルチマスターレプリケーション構築。可用性99.999%への道
- 【第6回】セキュリティ強化。自己署名証明書の撤廃とTLS完全化
- 【第7回】パフォーマンスチューニング。インデックス設計とキャッシュ戦略
- 【第8回】クライアント連携。SSSDによるオフライン認証と統合管理
目次
第1章:事前準備。OS設定の落とし穴
389 DSは非常に厳密なチェックを行うため、OSの初期設定が不十分だとインストールに失敗します。
特に重要なのが「ホスト名解決」と「ファイルディスクリプタ」です。
1. ホスト名とFQDNの設定
LDAPサーバーは、自分自身の名前(FQDN)を厳格にチェックします。localhost やIPアドレスだけの運用はトラブルの元です。
# ホスト名の設定 (例: ldap01.linuxkoubou.com) hostnamectl set-hostname ldap01.linuxkoubou.com # /etc/hosts の確認 # 自分のIPアドレスとFQDNが紐付いていることを確認してください # 例: 192.168.1.10 ldap01.linuxkoubou.com ldap01
hostname -f コマンドを実行して、正しいFQDN(例: ldap01.linuxkoubou.com)が返ってくることを必ず確認してください。
2. システムチューニング (sysctl)
大規模なディレクトリを扱う場合、デフォルトのTCP設定やファイルオープン数制限では不足します。/etc/sysctl.d/10-389-ds.conf を作成し、以下の設定を追加します。
# ポート枯渇対策 net.ipv4.ip_local_port_range = 1024 65000 # ファイル監視の制限緩和 (Cockpit等で使用) fs.inotify.max_user_watches = 524288
設定後、sysctl -p /etc/sysctl.d/10-389-ds.conf で反映します。
第2章:パッケージインストール。モジュールの仕組み
RHEL 9系では、389 DSは Module として提供されています。
通常の dnf install の前に、モジュールストリームを有効化する必要があります。
インストールコマンド
# モジュールの確認 dnf module list 389-ds # モジュールの有効化とインストール dnf module enable 389-ds:1.4 dnf install 389-ds-base sssd-tools
- 389-ds-base: サーバー本体と基本的なCLIツール。
- sssd-tools: 後でデバッグやクライアント設定に使うため、入れておくと便利です。
💡 プロの視点:Cockpitはまだ入れない?
Cockpit(Web管理画面)はサーバー本体とは独立しています。
依存関係のトラブルを避けるため、まずはサーバー本体(389-ds-base)だけを確実にインストールし、インスタンス作成後にCockpitを入れる手順を推奨します。
第3章:Infファイル作成。これがプロのIaCだ
ここが今回のハイライトです。dscreate interactive コマンドを叩くと対話形式でインストールできますが、これは「二度と同じ環境を作れない」リスクがあります。
構成情報(インスタンス名、ポート、サフィックス、管理者パスワード)を記述した Infファイル を作成しましょう。
構成ファイル (install.inf) の作成
以下の内容を install.inf として保存します。
[general] # 設定ファイルのバージョン(現在は2) config_version = 2 # ホスト名の厳密なチェックをスキップするか(本番ではFalse推奨だが、検証やクラウドではTrueにせざるを得ない場合も) strict_host_checking = False # systemdへの登録を行う systemd = True [slapd] # インスタンス名(/etc/dirsrv/slapd-localhost が作られる) instance_name = localhost # ディレクトリ管理者(rootではない)のパスワード root_password = YourStrongPassword123! # ポート設定(標準) port = 389 # 自己署名証明書を自動作成してLDAPSを有効化するか self_sign_cert = True secure_port = 636 [backend-userroot] # バックエンドデータベースを作成するか create_suffix_entry = True # ベースDN(サフィックス)の設定 suffix = dc=linuxkoubou,dc=com # サンプルデータを入れるか(本番ではFalse) sample_entries = False
各セクションの解説
- [general]: インストール全体に関わる設定。
full_machine_nameでFQDNを明示的に指定することも可能です。 - [slapd]: LDAPサーバープロセス(slapd)の設定。
root_dnを指定しない場合、デフォルトでcn=Directory Managerが管理者IDになります。 - [backend-userroot]: ユーザーデータを格納するバックエンドDBの設定。
backend-userrootというセクション名は任意ですが、慣例的にこう書きます。
このファイルをGitなどでバージョン管理しておけば、いつでも誰でも「全く同じ設定のLDAPサーバー」を一瞬で構築できます。
これこそが Infrastructure as Code です。
第4章:インスタンス作成と動作確認
準備は整いました。
作成したInfファイルを読み込ませて、インスタンスを作成します。
1. インスタンス作成コマンド
dscreate from-file install.inf
実行すると、以下のような処理が自動的に行われます。
dirsrvユーザーの作成- 設定ディレクトリ (
/etc/dirsrv/slapd-localhost/) の作成 - データベースの初期化
- 自己署名証明書の生成
- systemdサービスの登録と起動
「Completed successfully」と表示されれば成功です。
2. ステータス確認
dsctl localhost status
または、systemdコマンドで確認します。
![]() |
入門 モダンLinux ―オンプレミスからクラウドまで、幅広い知識を会得する 新品価格 |
systemctl status dirsrv@localhost
active (running) になっていればOKです。
3. LDAPアクセスの確認
自分自身に対して検索をかけてみます。
ldapsearch -x -H ldap://localhost -b "" -s base namingContexts
結果として namingContexts: dc=linuxkoubou,dc=com が返ってくれば、LDAPサーバーとして正常に応答しています。
4. ファイアウォールの開放
外部から接続できるようにポートを開けます。
firewall-cmd --add-service={ldap,ldaps} --permanent
firewall-cmd --reload
第5章:Cockpitの導入。ブラウザでLDAPを管理する
CLIだけでも運用できますが、389 DSの魅力は強力なGUIです。
RHEL標準の管理コンソール Cockpit に、389 DS用のプラグインを導入します。
1. インストールと起動
# パッケージインストール dnf install cockpit-389-ds # Cockpitサービスの起動 systemctl enable --now cockpit.socket # ポート開放 (9090/tcp) firewall-cmd --add-service=cockpit --permanent firewall-cmd --reload
2. ブラウザからのアクセス
Webブラウザで https://<サーバーIP>:9090 にアクセスします。
※自己署名証明書のため警告が出ますが、無視して進んでください。
- ユーザー名:
root(OSのrootユーザー) - パスワード: rootのパスワード
ログイン後、左側のメニューに「389 Directory Server」という項目が増えているはずです。
これをクリックすると、先ほど作成した localhost インスタンスが表示され、稼働状況のグラフやログを視覚的に確認できます。
ここから「Create New Instance」ボタンを押してGUIでインスタンスを作ることも可能ですが、先ほどのInfファイル方式の方が確実です。
第6章:トラブルシューティング。失敗時の正しい戻し方
389 DSのインストールは、一度失敗すると「中途半端な設定ファイル」が残ってしまい、再実行してもエラーになり続けることがあります。
プロなら「正しい壊し方(クリーンアップ)」を知っておく必要があります。
インストールに失敗した場合の対処
エラーログは /var/log/dirsrv/install.log に出力されます。まずはここを確認します。
原因を特定して修正した後、以下の手順で綺麗に削除してから再実行してください。
インスタンスの削除 (Remove)
dsctl localhost remove --do-it
このコマンドは、関連する設定ファイル、データベース、systemdサービス設定などを一括で削除してくれます。
手動で rm -rf /etc/dirsrv/... を行うと、依存関係が壊れてOS再インストールコースになる危険があるため、必ず dsctl remove を使ってください。
💡 よくあるエラー:SELinux
389 DSはSELinuxが Enforcing でも動作するようにポリシーが提供されていますが、非標準のポート(例えば3899番など)を使う場合はブロックされます。
トラブル切り分けのため、一時的に setenforce 0 にして動作するか確認するのは有効な手段です(恒久的な無効化は非推奨)。
まとめ:再現性のある環境構築を
お疲れ様でした!
第2回は、構成ファイル(Inf)を使った自動インストールと、Cockpitによる管理環境の構築を行いました。
今回の重要ポイント:
- 対話式インストールではなく、Infファイルを使ってIaCを実現する。
- ホスト名(FQDN)の設定はインストール前に完璧にしておく。
- Cockpitプラグインを使えば、サーバーの状態をブラウザから監視できる。
- 失敗時は手動削除せず、
dsctl removeでクリーンアップする。
これで、安心して使えるLDAPサーバーの土台ができたわね。
でも、まだ中身は空っぽよ。
次回からは、このサーバーにユーザーやグループを追加していくけれど、ここでもLDIFを書くような「前時代的な作業」はしないわ。
389 DSならではの強力なCLIツールを使いこなしましょう!
次回、第3回は「CLI管理の革命。dsidmコマンドとJSON出力の活用」です。ldapadd や ldapmodify を使わずに、直感的なコマンドでユーザー管理を行う方法と、スクリプト連携に最強なJSON出力機能について解説します。お楽しみに!
▼ 389 DSを試してみる ▼
AlmaLinuxが使える
「おすすめVPS」
インフラ自動化のプロへ
「ITエンジニア転職」


コメント