Red Hat Training

A Red Hat training course is available for RHEL 8

第32章 Ansible Playbook で Identity Management レプリカのインストール

Ansible を使用してシステムを IdM レプリカとして設定すると、IdM ドメインに登録され、ドメインの IdM サーバーにある IdM サービスをシステムが使用できるようになります。

デプロイメントは、Ansible ロール ipareplica で管理されます。このロールは、自動検出モードを使用して、IdM サーバー、ドメイン、およびその他の設定を識別できます。ただし、複数のレプリカを階層のようなモデルでデプロイし、そのレプリカのグループを異なるタイミングでデプロイする場合には、グループごとに特定のサーバーまたはレプリカを定義する必要があります。

前提条件

  • Ansible コントロールノードに ansible-freeipa パッケージがインストールされている。
  • Ansibleと IdM の概念を理解している:

    • Ansible ロール
    • Ansible ノード
    • Ansible インベントリー
    • Ansible タスク
    • Ansible モジュール
    • Ansible プレイおよび Playbook

32.1. IdM レプリカをインストールするためのベース変数、サーバー変数、およびクライアント変数の指定

IdM レプリカをインストールするためのインベントリーファイルを設定するには、以下の手順を完了します。

前提条件

  • 次の要件を満たすように Ansible コントロールノードを設定している。

    • Ansible バージョン 2.14 以降を使用している。
    • Ansible コントローラーに ansible-freeipa パッケージがインストールされている。
    • この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
    • この例では、secret.yml Ansible ボールトに ipaadmin_password が保存されていることを前提としている。
  • ansible-freeipa モジュールが実行されるノードであるターゲットノードは、IdM クライアント、サーバー、またはレプリカとしての IdM ドメインの一部です。

手順

  1. 編集するインベントリーファイルを開きます。IdM レプリカとなるホストの完全修飾ドメイン名 (FQDN) を指定します。FQDN は有効な DNS 名である必要があります。

    • 数字、アルファベット、およびハイフン (-) のみを使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。
    • ホスト名がすべて小文字である。

      レプリカの FQDN のみが定義されている単純なインベントリーホストファイルの例

      [ipareplicas]
      replica1.idm.example.com
      replica2.idm.example.com
      replica3.idm.example.com
      [...]

      IdM サーバーがデプロイされており、SRV レコードが IdM DNS ゾーンに適切に設定されている場合、スクリプトはその他に必要な値をすべて自動的に検出します。

  2. [オプション] トポロジーの設計方法に基づいて、インベントリーファイルに追加情報を入力します。

    シナリオ 1

    自動検出を回避し、[ipareplicas] セクションに記載されているすべてのレプリカが特定の IdM サーバーを使用するようにするには、インベントリーファイルの [ipaservers] セクションにそのサーバーを設定します。

    IdM サーバーとレプリカの FQDN が定義されているインベントリーホストファイルの例

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas]
    replica1.idm.example.com
    replica2.idm.example.com
    replica3.idm.example.com
    [...]

    シナリオ 2

    または、自動検出を回避して、特定のサーバーで特定のレプリカをデプロイする場合は、インベントリーファイルの [ipareplicas] セクションに、特定のレプリカのサーバーを個別に設定します。

    特定のレプリカ用に特定の IdM サーバーが定義されたインベントリーファイルの例

    [ipaservers]
    server.idm.example.com
    replica1.idm.example.com
    
    [ipareplicas]
    replica2.idm.example.com
    replica3.idm.example.com ipareplica_servers=replica1.idm.example.com

    上記の例では、replica3.idm.example.com が、すでにデプロイされた replica1.idm.example.com を複製元として使用します。

    シナリオ 3

    1 つのバッチに複数のレプリカをデプロイする場合は、多層レプリカのデプロイメントが役に立ちます。インベントリーファイルにレプリカの特定グループ (例: [ipareplicas_tier1] および [ipareplicas_tier2]) を定義し、Playbook install-replica.yml で各グループに個別のプレイを設計します。

    レプリカ階層が定義されているインベントリーファイルの例

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas_tier1]
    replica1.idm.example.com
    
    [ipareplicas_tier2]
    replica2.idm.example.com \ ipareplica_servers=replica1.idm.example.com,server.idm.example.com

    ipareplica_servers の最初のエントリーが使用されます。次のエントリーは、フォールバックオプションとして使用されます。IdM レプリカのデプロイに複数の層を使用する場合は、最初に tier1 からレプリカをデプロイし、次に tier2 からレプリカをデプロイするように、Playbook に個別のタスクが必要です。

    レプリカグループごとに異なるプレイを定義した Playbook ファイルの例

    ---
    - name: Playbook to configure IPA replicas (tier1)
      hosts: ipareplicas_tier1
      become: true
    
      roles:
      - role: ipareplica
        state: present
    
    - name: Playbook to configure IPA replicas (tier2)
      hosts: ipareplicas_tier2
      become: true
    
      roles:
      - role: ipareplica
        state: present

  3. [オプション] firewalld と DNS に関する追加情報を入力します。

    シナリオ 1

    レプリカが、デフォルトのゾーンの代わりに指定した firewalld ゾーンを使用するようにする場合は、インベントリーファイルに指定できます。これは、たとえば、デフォルトとして設定されているパブリックゾーンの代わりに、IdM インストールに内部 firewalld ゾーンを使用する場合に役立ちます。

    カスタムゾーンを設定しないと、サービスがデフォルトの firewalld ゾーンに追加されます。事前定義されたデフォルトゾーンは public です。

    重要

    指定する firewalld ゾーンは存在し、永続的でなければなりません。

    カスタム firewalld 帯を持つシンプルなインベントリーホストファイルの例

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas]
    replica1.idm.example.com
    replica2.idm.example.com
    replica3.idm.example.com
    [...]
    
    [ipareplicas:vars]
    ipareplica_firewalld_zone=custom zone

    シナリオ 2

    レプリカが IdM DNS サービスをホストするようにする場合は、ipareplica_setup_dns=yes 行を [ipareplicas:vars] セクションに追加します。また、サーバーごとの DNS フォワーダーを使用するかどうかを指定します。

    • サーバーごとのフォワーダーを設定するには、ipareplica_forwarders 変数と文字列のリストを [ipareplicas:vars] セクションに追加します (例: ipareplica_forwarders=192.0.2.1,192.0.2.2)。
    • サーバーごとにフォワーダーを設定しない場合は、ipareplica_no_forwarders=yes の行を [ipareplicas:vars] セクションに追加します。
    • レプリカの /etc/resolv.conf ファイルにリスト表示されているフォワーダーに基づいてサーバーごとにフォワーダーを設定するには、[ipareplicas:vars] セクションに ipareplica_auto_forwarders を追加します。

    レプリカに DNS とサーバーごとのフォワーダーを設定する手順を含むインベントリーファイルの例

    [ipaservers]
    server.idm.example.com
    
    [ipareplicas]
    replica1.idm.example.com
    replica2.idm.example.com
    replica3.idm.example.com
    [...]
    
    [ipareplicas:vars]
    ipareplica_setup_dns=yes
    ipareplica_forwarders=192.0.2.1,192.0.2.2

    シナリオ 3

    ipaclient_configure_dns_resolve および ipaclient_dns_servers オプション (使用可能な場合) を使用して DNS リゾルバーを指定し、クラスターのデプロイメントを簡素化します。これは、IdM デプロイメントが統合 DNS を使用している場合に特に便利です。

    DNS リゾルバーを指定するインベントリーファイルスニペット:

    [...]
    [ipaclient:vars]
    ipaclient_configure_dns_resolver=true
    ipaclient_dns_servers=192.168.100.1

    注記

    ipaclient_dns_servers リストには IP アドレスのみを含める必要があります。ホスト名を含めることはできません。

関連情報

  • ipareplica 変数の詳細は、/usr/share/ansible/roles/ipareplica/README.md Markdown ファイルを参照してください。