Identity Management でのレプリケーションの管理
レプリケーション環境の準備および検証
概要
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 レプリケーショントポロジーの管理
本章では、Identity Management(IdM) ドメイン内のサーバー間のレプリケーションを管理する方法を説明します。
1.1. レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明
レプリカを作成すると、Identity Management (IdM) が初期サーバーとレプリカ間にレプリカ合意を作成します。複製されるデータはトポロジーの接尾辞に保存され、2 つのレプリカの接尾辞間でレプリカ合意があると、接尾辞がトポロジーセグメントを形成します。これらの概念は、以下のセクションで詳細に説明されています。
1.1.1. IdM レプリカ間のレプリカ合意
管理者が、既存のサーバーに基づいてレプリカを作成すると、Identity Management (IdM) は、初期サーバーとレプリカとの間に レプリカ合意 を作成します。レプリカ合意は、データと設定が 2 台のサーバー間で継続的に複製されることを保証します。
IdM は、複数の読み取り/書き込みレプリカ複製 を使用します。この設定では、レプリカ合意に参加しているすべてのレプリカが更新の受信と提供を行うので、サプライヤーとコンシューマーとみなされます。レプリカ合意は常に双方向です。
図1.1 サーバーとレプリカ合意
![サーバー 2 台の間に 2 つのレプリカ合意があるイメージ: Directory Server データベースに関連するデータのレプリカ合意と、Certificate System データに関連する証明書レプリカ合意](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Managing_replication_in_Identity_Management-ja-JP/images/d06b1dd2052f1e330862ea59ba3cf9db/64_RHEL_IdM_0120_2.1.png)
IdM は、2 種類のレプリカ合意を使用します。
- ドメインレプリカ合意 は、アイデンティティー情報をレプリケートします。
- 証明書レプリカ合意 は、証明書情報をレプリケートします。
両方の複製チャンネルは独立しています。2 台のサーバー間で、いずれかまたは両方の種類のレプリカ合意を設定できます。たとえば、サーバー A とサーバー B にドメインレプリカ合意のみが設定されている場合は、証明書情報ではなく ID 情報だけが複製されます。
1.1.2. トポロジー接尾辞
トポロジー接尾辞は、レプリケートされるデータを保存します。IdM は、domain
と ca
の 2 種類のトポロジー接尾辞に対応します。それぞれの接尾辞は、個別のサーバーである個別のレプリケーショントポロジーを表します。
レプリカ合意が設定されると、同じタイプのトポロジー接尾辞を 2 つの異なるサーバーに結合します。
domain
接尾辞: dc=example,dc=comdomain
接尾辞には、ドメイン関連のデータがすべて含まれています。2 つのレプリカの
domain
接尾辞間でレプリカ合意が設定されると、ユーザー、グループ、およびポリシーなどのディレクトリーデータが共有されます。ca
接尾辞: o=ipacaca
接尾辞には、Certificate System コンポーネントのデータが含まれます。これは認証局 (CA) がインストールされているサーバーにのみ存在します。2 つのレプリカの
ca
接尾辞間でレプリカ合意が設定されると、証明書データが共有されます。
図1.2 トポロジー接尾辞
![トポロジー接尾辞](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Managing_replication_in_Identity_Management-ja-JP/images/fa33c5d5e4147da3c6802434b88b38ee/topology_suffix.png)
新規レプリカのインストール時には、ipa-replica-install
スクリプトが 2 つのサーバー間に初期トポロジーレプリカ合意をセットアップします。
例1.1 トポロジー接尾辞の表示
ipa topologysuffix-find
コマンドでトポロジー接尾辞のリストが表示されます。
$ ipa topologysuffix-find --------------------------- 2 topology suffixes matched --------------------------- Suffix name: ca Managed LDAP suffix DN: o=ipaca Suffix name: domain Managed LDAP suffix DN: dc=example,dc=com ---------------------------- Number of entries returned 2 ----------------------------
1.1.3. トポロジーセグメント
2 つのレプリカの接尾辞間でレプリカ合意があると、接尾辞は トポロジーセグメント を形成します。各トポロジーセグメントは、左ノードと右ノード で構成されます。ノードは、レプリカ合意に参加しているサーバーを表します。
IdM のトポロジーセグメントは常に双方向です。各セグメントは、サーバー A からサーバー B、およびサーバー B からサーバー A への 2 つのレプリカ合意を表します。そのため、データは両方の方向でレプリケートされます。
図1.3 トポロジーセグメント
![トポロジーセグメント](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Managing_replication_in_Identity_Management-ja-JP/images/9148063b300b50cc2a573ed8067a83d4/topology_segment.png)
例1.2 トポロジーセグメントの表示
ipa topologysegment-find
コマンドで、ドメインまたは CA 接尾辞に設定されたトポロジーセグメントが表示されます。たとえば、ドメイン接尾辞の場合は、以下のようになります。
$ ipa topologysegment-find Suffix name: domain ----------------- 1 segment matched ----------------- Segment name: server1.example.com-to-server2.example.com Left node: server1.example.com Right node: server2.example.com Connectivity: both ---------------------------- Number of entries returned 1 ----------------------------
この例では、ドメイン関連のデータのみが server1.example.com
と server2.example.com
の 2 つのサーバー間で複製されます。
特定セグメントの詳細を表示するには、ipa topologysegment-show
コマンドを使用します。
$ ipa topologysegment-show Suffix name: domain Segment name: server1.example.com-to-server2.example.com Segment name: server1.example.com-to-server2.example.com Left node: server1.example.com Right node: server2.example.com Connectivity: both
1.2. トポロジーグラフを使用したレプリケーショントポロジーの管理
Web UI のトポロジーグラフは、ドメイン内のサーバー間の関係を表示します。Web UI を使用すると、トポロジーの表現を操作および変換できます。
トポロジーグラフへのアクセス
トポロジーグラフにアクセスするには、以下を実行します。
- → → を選択します。
- トポロジーに加えた変更がグラフに反映されていない場合は、 をクリックします。
トポロジーグラフの解釈
ドメインのレプリカ合意に参加しているサーバーは、オレンジ色の矢印によって接続されます。CA のレプリカ合意に参加しているサーバーは、青色の矢印によって接続されます。
- トポロジーグラフの例: 推奨されるトポロジー
以下の推奨トポロジーの例は、4 台のサーバーに対して考えられる推奨トポロジーの 1 つを示しています。各サーバーは少なくとも 2 つの他のサーバーに接続されており、複数のサーバーが CA サーバーです。
図1.4 推奨されるトポロジーの例
- トポロジーグラフの例: 推奨されないトポロジー
推奨されないトポロジーの例では、
server1
が単一障害点になります。その他のすべてのサーバーは、このサーバーとのレプリカ合意がありますが、他のサーバーとは合意がありません。したがって、server1
が失敗すると、他のすべてのサーバーは分離されます。このようなトポロジーの作成は避けてください。
図1.5 推奨されないトポロジーの例: 単一障害点
トポロジービューのカスタマイズ
マウスのボタンを押したままドラッグすることで、個々のトポロジーノードを移動できます。
図1.6 トポロジーグラフのノードの移動
![グラフのカスタマイズ 1](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Managing_replication_in_Identity_Management-ja-JP/images/a21fdc688f301a69218b178065c384a6/customize_graph_1.png)
マウスのホイールを使用して、トポロジーグラフを拡大および縮小できます。
図1.7 トポロジーグラフのズーム
![グラフのカスタマイズ 2](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Managing_replication_in_Identity_Management-ja-JP/images/69f3d9636a9fa848d665cbb9b43e923d/customize_graph_2.png)
マウスの左ボタンを保持することで、トポロジーグラフのキャンバスを移動できます。
図1.8 トポロジーグラフのキャンバスの移動
![グラフのカスタマイズ 3](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Managing_replication_in_Identity_Management-ja-JP/images/c4c29e9ae8eb8437036b036ec4594021/customize_graph_3.png)
1.3. Web UI を使用した 2 台のサーバー間のレプリケーションの設定
Identity Management (IdM) Web UI を使用すると、2 つのサーバーを選択し、それらのサーバー間に新しいレプリカ合意を作成できます。
前提条件
- IdM 管理者としてログインしている。
手順
トポロジーグラフで、サーバーノードの 1 つにマウスを合わせます。
図1.9 ドメインまたは CA オプション
-
作成するトポロジーセグメントのタイプに応じて、
domain
または円のca
部分をクリックします。 新しいレプリカ合意を表す新しい矢印が、マウスポインターの下に表示されます。マウスを他のサーバーノードに移動し、そこでクリックします。
図1.10 新規セグメントの作成
-
Add Topology Segment
ウィンドウで をクリックして、新規セグメントのプロパティーを確認します。
2 台のサーバー間の新しいトポロジーセグメントは、サーバーをレプリカ合意に参加させます。トポロジーグラフには、更新されたレプリケーショントポロジーが表示されるようになりました。
図1.11 新規に作成されたセグメント
![mng top three](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Managing_replication_in_Identity_Management-ja-JP/images/95346630b2944b155eed2bfc4f86d883/mng_top_three.png)
1.4. Web UI を使用した 2 台のサーバー間のレプリケーションの停止
Identity Management (IdM) Web UI を使用すると、サーバーからレプリカ合意を削除できます。
前提条件
- IdM 管理者としてログインしている。
手順
削除するレプリカ合意を表す矢印をクリックします。これにより、矢印がハイライト表示されます。
図1.12 トポロジーセグメントのハイライト表示
- をクリックします。
Confirmation
ウィンドウで をクリックします。IdM は、2 台のサーバー間のトポロジーセグメントを削除します。これにより、そのレプリカ合意が削除されます。トポロジーグラフには、更新されたレプリケーショントポロジーが表示されるようになりました。
図1.13 トポロジーセグメントの削除
1.5. CLI を使用した 2 つのサーバー間のレプリケーションの設定
ipa topologysegment-add
コマンドを使用して、2 台のサーバー間のレプリカ合意を設定できます。
前提条件
- IdM 管理者認証情報がある。
手順
2 つのサーバーのトポロジーセグメントを作成します。プロンプトが表示されたら、以下を指定します。
-
必要なトポロジー接尾辞:
domain
またはca
- 2 つのサーバーを表す、左ノードと右のノード
[オプション] セグメントのカスタム名
以下に例を示します。
$ ipa topologysegment-add Suffix name: domain Left node: server1.example.com Right node: server2.example.com Segment name [server1.example.com-to-server2.example.com]: new_segment --------------------------- Added segment "new_segment" --------------------------- Segment name: new_segment Left node: server1.example.com Right node: server2.example.com Connectivity: both
新しいセグメントを追加すると、サーバーをレプリカ合意に参加させます。
-
必要なトポロジー接尾辞:
検証
新しいセグメントが設定されていることを確認します。
$ ipa topologysegment-show Suffix name: domain Segment name: new_segment Segment name: new_segment Left node: server1.example.com Right node: server2.example.com Connectivity: both
1.6. CLI を使用した 2 つのサーバー間のレプリケーションの停止
ipa topology_segment-del
コマンドを使用して、コマンドラインからレプリカ合意を終了できます。
前提条件
- IdM 管理者認証情報がある。
手順
[オプション] 削除する特定のレプリケーションセグメントの名前がわからない場合は、使用可能なすべてのセグメントを表示します。
ipa topologysegment-find
コマンドを使用します。プロンプトが表示されたら、必要なトポロジー接尾辞 (domain
またはca
) を指定します。以下に例を示します。$ ipa topologysegment-find Suffix name: domain ------------------ 8 segments matched ------------------ Segment name: new_segment Left node: server1.example.com Right node: server2.example.com Connectivity: both ... ---------------------------- Number of entries returned 8 ----------------------------
必要なセグメントを出力で特定します。
2 つのサーバーを結合するトポロジーセグメントを削除します。
$ ipa topologysegment-del Suffix name: domain Segment name: new_segment ----------------------------- Deleted segment "new_segment" -----------------------------
セグメントを削除すると、レプリカ合意が削除されます。
検証
セグメントがリストに表示されなくなったことを確認します。
$ ipa topologysegment-find Suffix name: domain ------------------ 7 segments matched ------------------ Segment name: server2.example.com-to-server3.example.com Left node: server2.example.com Right node: server3.example.com Connectivity: both ... ---------------------------- Number of entries returned 7 ----------------------------
1.7. Web UI を使用したトポロジーからのサーバーの削除
Identity Management (IdM) の Web インターフェイスを使用して、トポロジーからサーバーを削除できます。この操作では、サーバーコンポーネントがホストからアンインストールされません。
前提条件
- IdM 管理者としてログインしている。
- 削除するサーバーが、残りのトポロジーで他のサーバーに接続する 唯一のサーバーではない。この場合、他のサーバーが分離されますが、これは許可されていません。
- 削除するサーバーが、最後の CA または DNS サーバー ではない。
サーバーの削除は元に戻せないアクションです。サーバーを削除すると、トポロジーに戻す唯一の方法は、マシンに新しいレプリカをインストールすることです。
手順
- → → を選択します。
削除するサーバーの名前をクリックします。
図1.14 サーバーの選択
- をクリックします。
関連情報
1.8. IdM Web UI を使用して IdM トポロジーで利用可能なサーバーロールを表示する
IdM サーバーにインストールされるサービスに基づいて、さまざまな サーバーロール を実行できます。以下に例を示します。
- CA サーバー
- DNS サーバー
- キーリカバリー認証局 (KRA) サーバー
手順
サポートされるサーバーロールの完全なリストは、
→ → を参照してください。注記-
Role status が
absent
の場合は、トポロジー内でそのロールを実行しているサーバーがないことを示しています。 -
Role status が
enabled
の場合は、トポロジー内でそのロールを実行しているサーバーが 1 台以上あることを示しています。
図1.15 Web UI でのサーバーロール
-
Role status が
1.9. IdM CLI を使用して IdM トポロジーで利用可能なサーバーロールを表示する
IdM サーバーにインストールされるサービスに基づいて、さまざまな サーバーロール を実行できます。以下に例を示します。
- CA サーバー
- DNS サーバー
- キーリカバリー認証局 (KRA) サーバー
手順
トポロジー内のすべての CA サーバーと現在の CA 更新サーバーを表示するには、以下を実行します。
$ ipa config-show ... IPA masters: server1.example.com, server2.example.com, server3.example.com IPA CA servers: server1.example.com, server2.example.com IPA CA renewal master: server1.example.com
または、特定のサーバー (例: server.example.com) で有効になっているロールのリストを表示するには、以下を実行します。
$ ipa server-show Server name: server.example.com ... Enabled server roles: CA server, DNS server, KRA server
または、
ipa server-find --servrole
コマンドを使用して、特定のサーバーロールが有効になっているすべてのサーバーを検索します。たとえば、すべての CA サーバーを検索するには、以下を実行します。$ ipa server-find --servrole "CA server" --------------------- 2 IPA servers matched --------------------- Server name: server1.example.com ... Server name: server2.example.com ... ---------------------------- Number of entries returned 2 ----------------------------
1.10. レプリカの CA 更新サーバーおよび CRL パブリッシャーサーバーへのプロモート
IdM デプロイメントで組み込み認証局 (CA) を使用する場合は、IdM CA サーバーの 1 つが CA サブシステム証明書の更新を管理する CA 更新サーバーとして機能します。IdM CA サーバーの 1 つは、証明書失効リストを生成する IdM CRL パブリッシャーサーバーとしても機能します。
デフォルトでは、CA 更新サーバーおよび CRL パブリッシャーサーバーロールは、システム管理者が ipa-server-install
または ipa-ca-install
コマンドを使用して CA ロールをインストールした最初のサーバーにインストールされます。ただし、CA ロールが有効になっている他の IdM サーバーに 2 つのロールのいずれかを転送することはできます。
前提条件
- IdM 管理者認証情報がある。
第2章 Ansible Playbook を使用して IdM を管理する環境の準備
Identity Management (IdM) を管理するシステム管理者は、Red Hat Ansible Engine を使用する際に以下を行うことが推奨されます。
- ホームディレクトリーに Ansible Playbook 専用のサブディレクトリー (例: ~/MyPlaybooks) を作成します。
-
/usr/share/doc/ansible-freeipa/*
と/usr/share/doc/rhel-system-roles/*
ディレクトリーおよびサブディレクトリーから ~/MyPlaybooks ディレクトリーにサンプル Ansible Playbook をコピーして調整します。 - ~/MyPlaybooks ディレクトリーにインベントリーファイルを追加します。
このプラクティスを使用すると、すべての Playbook を 1 カ所で見つけることができます。また、root 権限を呼び出しなくても Playbook を実行できます。
マネージドノードで root
権限があれば、ipaserver
、ipareplica
、ipaclient
、および ipabackup
ansible-freeipa
ロールを実行できます。これらのロールには、ディレクトリーおよび dnf
ソフトウェアパッケージマネージャーへの特権アクセスが必要です。
~/MyPlaybooks ディレクトリーを作成し、それを使用して Ansible Playbook を保存および実行できるように設定するには、次の手順に従います。
前提条件
- マネージドノードに IdM サーバー (server.idm.example.com および replica.idm.example.com) をインストールした。
- DNS およびネットワークを設定し、コントロールノードから直接マネージドノード (server.idm.example.com および replica.idm.example.com) にログインすることができる。
-
IdM
admin
のパスワードを把握している。
手順
Ansible 設定および Playbook のディレクトリーをホームディレクトリーに作成します。
$ mkdir ~/MyPlaybooks/
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks
~/MyPlaybooks/ansible.cfg ファイルを以下の内容で作成します。
[defaults] inventory = /home/your_username/MyPlaybooks/inventory [privilege_escalation] become=True
~/MyPlaybooks/inventory ファイルを以下の内容で作成します。
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
この設定は、これらの場所にあるホストの 2 つのホストグループ (eu と us) を定義します。さらに、この設定は、eu および us グループのすべてのホストを含む ipaserver ホストグループを定義します。
オプション: SSH 公開鍵および秘密鍵を作成します。テスト環境でのアクセスを簡素化するには、秘密鍵にパスワードを設定しないでください。
$ ssh-keygen
各マネージドノードの IdM
admin
アカウントに SSH 公開鍵をコピーします。$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
これらのコマンドでは、IdM
管理者
パスワードを入力します。
関連情報
- Ansible Playbook を使用した Identity Management サーバーのインストール を参照してください。
- インベントリーの構築方法 を参照してください。
第3章 Ansible を使用した IdM でのレプリケーショントポロジーの管理
複数の Identity Management (IdM) サーバーを維持し、冗長性の目的で相互に複製して、サーバーの損失を軽減または防止することができます。たとえば、1 台のサーバーに障害が発生しても、その他のサーバーがドメインにサービスを提供し続けます。障害が発生していないサーバーの 1 台から新しいレプリカを作成し、失われたサーバーを回復することもできます。
IdM サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリケートされるデータはトポロジーの suffix
に保存されます。2 つのレプリカに接尾辞間でレプリカ合意があると、接尾辞はトポロジー segment
を形成します。
この章では、Ansible を使用して IdM レプリカ合意、トポロジーセグメント、およびトポロジー接尾辞を管理する方法について説明します。
3.1. Ansible を使用して、レプリカ合意が IdM に存在することを確認
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
この手順に従い、Ansible Playbook を使用して、server.idm.example.com と replica.idm.example.com との間で domain
タイプのレプリカ合意が存在することを確認説明します。
前提条件
- トポロジーで IdM レプリカを接続するためのガイドライン に記載されている IdM トポロジーを設計するための推奨事項を確実に理解している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
ansible-freeipa
パッケージによって提供されるadd-topologysegment.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml
-
add-topologysegment-copy.yml
ファイルを開いて編集します。 ipatopologysegment
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数の値が secret.yml Ansible vault ファイルで定義されていることを示します。 -
追加するセグメントのタイプに応じて、
suffix
変数をdomain
またはca
のいずれかに設定します。 -
left
の変数をレプリカ合意の左ノードに設定する IdM サーバーの名前に設定します。 -
レプリカ合意の適切なノードとなる IdM サーバーの名前に
right
変数を設定します。 -
state
変数はpresent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com state: present
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegment-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明
-
/usr/share/doc/ansible-freeipa/README-topology.md
-
/usr/share/doc/ansible-freeipa/playbooks/topology
にあるサンプル Playbook
3.2. Ansible を使用して複数の IdM レプリカ間でレプリカ合意を存在させる手順
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
以下の手順に従って、IdM の複数のレプリカのペア間でレプリカ合意が存在することを確認します。
前提条件
- トポロジーで IdM レプリカを接続するためのガイドライン に記載されている IdM トポロジーを設計するための推奨事項を確実に理解している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
ansible-freeipa
パッケージによって提供されるadd-topologysegments.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegments.yml add-topologysegments-copy.yml
-
add-topologysegments-copy.yml
ファイルを開いて編集します。 vars
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数の値が secret.yml Ansible vault ファイルで定義されていることを示します。 すべてのトポロジーセグメントについて、
ipatopology_segments
セクションに行を追加し、以下の変数を設定します。-
追加するセグメントのタイプに応じて、
suffix
変数をdomain
またはca
のいずれかに設定します。 -
left
の変数をレプリカ合意の左ノードに設定する IdM サーバーの名前に設定します。 -
レプリカ合意の適切なノードとなる IdM サーバーの名前に
right
変数を設定します。
-
追加するセグメントのタイプに応じて、
-
add-topologysegments-copy.yml
ファイルのtasks
セクションで、state
変数がpresent
に設定されていることを確認します。以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com , right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: present loop: "{{ ipatopology_segments | default([]) }}"
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegments-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明
-
/usr/share/doc/ansible-freeipa/README-topology.md
-
/usr/share/doc/ansible-freeipa/playbooks/topology
にあるサンプル Playbook
3.3. Ansible を使用して 2 つのレプリカ間でレプリカ合意が存在するかどうかの確認
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
以下の手順に従って、IdM のレプリカのペア間でレプリカ合意が存在することを確認します。Ansible を使用して IdM にレプリカ合意が存在することを確認する場合 とは対照的に、この手順では既存の設定は変更されません。
前提条件
- トポロジーで IdM レプリカを接続するためのガイドライン に記載されている Identity Management (IdM) トポロジーを設計するための推奨事項を確実に理解している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
ansible-freeipa
パッケージによって提供されるcheck-topologysegments.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/check-topologysegments.yml check-topologysegments-copy.yml
-
check-topologysegments-copy.yml
ファイルを開いて編集します。 vars
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数の値が secret.yml Ansible vault ファイルで定義されていることを示します。 すべてのトポロジーセグメントについて、
ipatopology_segments
セクションに行を追加し、以下の変数を設定します。-
追加するセグメントのタイプに応じて、
suffix
変数をdomain
またはca
のいずれかに設定します。 -
left
の変数をレプリカ合意の左ノードに設定する IdM サーバーの名前に設定します。 -
レプリカ合意の適切なノードとなる IdM サーバーの名前に
right
変数を設定します。
-
追加するセグメントのタイプに応じて、
-
check-topologysegments-copy.yml
ファイルのtasks
セクションで、state
変数がpresent
に設定されていることを確認します。以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com, right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Check topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: checked loop: "{{ ipatopology_segments | default([]) }}"
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory check-topologysegments-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明
-
/usr/share/doc/ansible-freeipa/README-topology.md
-
/usr/share/doc/ansible-freeipa/playbooks/topology
にあるサンプル Playbook
3.4. Ansible を使用してトポロジーの接尾辞が IdM に存在することを確認
Identity Management (IdM) のレプリカ合意のコンテキストでは、トポロジー接尾辞はレプリケートされるデータを保存します。IdM は、domain
と ca
の 2 種類のトポロジー接尾辞に対応します。それぞれの接尾辞は、個別のバックエンドである個別のレプリケーショントポロジーを表します。レプリカ合意が設定されると、同じタイプのトポロジー接尾辞を 2 つの異なるサーバーに結合します。
domain
接尾辞には、ユーザー、グループ、ポリシーに関するデータなど、ドメイン関連のすべてのデータが含まれます。ca
接尾辞には、Certificate System コンポーネントのデータが含まれます。これは認証局 (CA) がインストールされているサーバーにのみ存在します。
以下の手順に従って、Ansible Playbook を使用して、トポロジー接尾辞が IdM に存在することを確認します。この例では、domain
接尾辞が IdM に存在することを確認する方法を説明します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
ansible-freeipa
パッケージによって提供されるverify-topologysuffix.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/ verify-topologysuffix.yml verify-topologysuffix-copy.yml
-
Ansible Playbook ファイル
verify-topologysuffix-copy.yml
を開きます。 ipatopologysuffix
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数の値が secret.yml Ansible vault ファイルで定義されていることを示します。 -
suffix
変数はdomain
に設定し ます。ca
接尾辞が存在することを確認する場合は、変数をca
に設定します。 -
state
変数がverified
に設定されていることを確認します。他のオプションは使用できません。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysuffix hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Verify topology suffix ipatopologysuffix: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain state: verified
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory verify-topologysuffix-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明
-
/usr/share/doc/ansible-freeipa/README-topology.md
-
/usr/share/doc/ansible-freeipa/playbooks/topology
にあるサンプル Playbook
3.5. Ansible を使用した IdM レプリカの再初期化
レプリカが長時間オフラインになっている場合や、データベースが破損している場合は、レプリカを再初期化できます。再初期化により、新しいデータセットでレプリカが更新されます。たとえば、バックアップからの権限のある復元を行う必要がある場合に、再初期化を使用できます。
レプリケーションの更新とは対照的に、レプリカが変更エントリーのみを送信する間、データベース全体を再初期化します。
コマンドを実行するローカルホストは、再初期化されたレプリカです。データの取得元となるレプリカを指定するには、direction
オプションを使用します。
以下の手順に従って、Ansible Playbook を使用して server.idm.example.com から replica.idm.example.com の domain
データを再初期化します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
ansible-freeipa
パッケージによって提供されるreinitialize-topologysegment.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/reinitialize-topologysegment.yml reinitialize-topologysegment-copy.yml
-
reinitialize-topologysegment-copy.yml
ファイルを開いて編集します。 ipatopologysegment
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数の値が secret.yml Ansible vault ファイルで定義されていることを示します。 -
suffix
変数はdomain
に設定し ます。ca
データを再初期化する場合は、変数をca
に設定します。 -
left
の変数をレプリカ合意の左ノードに設定します。 -
レプリカ合意の
right
なノードに正しい変数を設定します。 -
direction
変数は再初期化されるデータの方向に設定します。left-to-right
は、左のノードから適切なノードにデータフローがあることを意味します。 state
変数がreinitialized
に設定されていることを確認します。以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Reinitialize topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com direction: left-to-right state: reinitialized
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory reinitialize-topologysegment-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明
-
/usr/share/doc/ansible-freeipa/README-topology.md
-
/usr/share/doc/ansible-freeipa/playbooks/topology
にあるサンプル Playbook
3.6. Ansible を使用して IdM にレプリカ合意がないことを確認する手順
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
以下の手順に従って、2 つのレプリカ間のレプリカ合意が IdM に存在しないことを確認します。この例では、domain
タイプのレプリカ合意が、replica01.idm.example.com と replica02.idm.example.com 間で存在させないようにする方法を説明します。
前提条件
- トポロジー内のレプリカの接続 に記載されている IdM トポロジーの設計に関する推奨事項を理解している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
ansible-freeipa
パッケージによって提供されるdelete-topologysegment.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/delete-topologysegment.yml delete-topologysegment-copy.yml
-
delete-topologysegment-copy.yml
ファイルを開いて編集します。 ipatopologysegment
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数の値が secret.yml Ansible vault ファイルで定義されていることを示します。 -
suffix
変数はdomain
に設定し ます。また、ca
データが左右ノードと右のノード間で複製されないようにするには、変数をca
に設定します。 -
left
の変数を、レプリカ合意の左ノードである IdM サーバーの名前に設定します。 -
右側
の変数を、レプリカ合意の右のノードである IdM サーバーの名前に設定します。 -
state
変数は、absent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: replica01.idm.example.com right: replica02.idm.example.com: state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory delete-topologysegment-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明
-
/usr/share/doc/ansible-freeipa/README-topology.md
-
/usr/share/doc/ansible-freeipa/playbooks/topology
にあるサンプル Playbook
3.7. 関連情報
第5章 Healthcheck を使用した IdM レプリケーションの確認
Healthcheck ツールを使用して、Identity Management (IdM) レプリケーションをテストできます。
前提条件
- RHEL バージョン 8.1 以降を使用している。
5.1. レプリケーションの Healthcheck テスト
Healthcheck ツールは、Identity Management (IdM) トポロジーの設定をテストして、レプリケーションの競合問題を検索します。
テストのリストを表示するには、--list-sources
オプションを指定して、ipa-healthcheck
を実行します。
# ipa-healthcheck --list-sources
トポロジーのテストは、ipahealthcheck.ipa.topology
ソースおよび ipahealthcheck.ds.replication
ソースの下にあります。
- IPATopologyDomainCheck
このテストでは、以下が検証されます。
- トポロジーから切断されたサーバーが 1 つもないこと。
- 推奨される数を超えるレプリカ合意がサーバーにないこと。
テストに成功すると、設定済みのドメインが返されます。成功しなかった場合は、特定の接続エラーが報告されます。
注記このテストでは、
domain
接尾辞に対してipa topologysuffix-verify
コマンドを実行します。このサーバーで IdM Certificate Authority サーバーロールが設定されている場合は、ca
接尾辞のコマンドも実行されます。- ReplicationConflictCheck
-
このテストでは、
(&(!(objectclass=nstombstone))(nsds5ReplConflict=*))
に一致する LDAP エントリーを検索します。
問題を確認するには、すべての IdM サーバーで上記のテストを実行します。
関連情報
5.2. Healthcheck を使用したレプリケーションのスクリーニング
Healthcheck ツールを使用して Identity Management (IdM) レプリケーショントポロジーと設定のスタンドアロン手動テストを実行するには、次の手順に従います。
Healthcheck ツールには多くのテストが含まれています。したがって、次のように結果を短縮することができます。
-
レプリケーションの競合テスト -
--source=ipahealthcheck.ds.replication
-
正確なトポロジーテスト -
--source=ipahealthcheck.ipa.topology
前提条件
-
root
ユーザーとしてログインしている。
手順
Healthcheck のレプリケーションの競合とトポロジーの確認を実行するには、次のコマンドを実行します。
# ipa-healthcheck --source=ipahealthcheck.ds.replication --source=ipahealthcheck.ipa.topology
以下のような 4 つの結果が取得できます。
SUCCESS - テストに成功
{ "source": "ipahealthcheck.ipa.topology", "check": "IPATopologyDomainCheck", "result": "SUCCESS", "kw": { "suffix": "domain" } }
- WARNING - テストには成功したが、問題の可能性あり
ERROR - テストが失敗
{ "source": "ipahealthcheck.ipa.topology", "check": "IPATopologyDomainCheck", "result": "ERROR", "uuid": d6ce3332-92da-423d-9818-e79f49ed321f "when": 20191007115449Z "duration": 0.005943 "kw": { "msg": "topologysuffix-verify domain failed, server2 is not connected (server2_139664377356472 in MainThread)" } }
- CRITICAL - テストが失敗し、IdM サーバー機能に影響が及ぶ
関連情報
-
man ipa-healthcheck