31.6. Ansible を使用して IdM に複数の CNAME レコードを存在させる手順
Canonical Name レコード (CNAME レコード) は、DNS (Domain Name System) のリソースレコードの一種で、別の名前 (CNAME) にドメイン名、エイリアスをマッピングします。
CNAME レコードは、FTP サービスと Web サービスがそれぞれ別のポートで実行されている場合など、1 つの IP アドレスから複数のサービスを実行する場合に、役立つ可能性があります。
Ansible Playbook を使用して、複数の CNAME レコードが IdM DNS に存在することを確認するには、以下の手順に従います。以下の手順で使用する例では、host03 は HTTP サーバーと FTP サーバーの両方として機能します。IdM 管理者は、idm.example.com ゾーンに host03 A レコードの www および ftp CNAME レコードを追加します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
ansible-freeipaパッケージがインストールされました。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を含む Ansible インベントリーファイル が作成されていることを前提としています。
-
この例では、secret.yml Ansible Vault に
ipaadmin_passwordが保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipaモジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。 - IdM 管理者パスワードを把握している。
- idm.example.com ゾーンが存在しており、IdM DNS が管理する。IdM DNS にプライマリー DNS ゾーンを追加する方法は、Ansible Playbook を使用した IdM DNS ゾーンの管理 を参照してください。
- host03 A レコードが idm.example.com ゾーンに存在している。
手順
/usr/share/doc/ansible-freeipa/playbooks/dnsrecordディレクトリーに移動します。$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecordインベントリーファイルを開き、設定する IdM サーバーが
[ipaserver]セクションに記載されていることを確認します。たとえば、Ansible に対して server.idm.example.com を設定するように指示するには、次のコマンドを実行します。[ipaserver] server.idm.example.comAnsible Playbook ファイル (ensure-CNAME-record-is-present.yml) のコピーを作成します。以下に例を示します。
$ cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.yml- ensure-CNAME-record-is-present-copy.yml ファイルを開いて編集します。
ipadnsrecordタスクセクションで以下の変数を設定して、ファイルを調整します。-
オプション: プレイの
nameによって提供される説明を調整します。 -
ipaadmin_password変数は IdM 管理者パスワードに設定します。 -
zone_name変数は idm.example.com に設定します。 records変数セクションで、以下の変数および値を設定します。-
name変数は www に設定します。 -
cname_hostname変数は host03 に設定します。 -
name変数は ftp に設定します。 -
cname_hostname変数は host03 に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
-
--- - name: Ensure that 'www.idm.example.com' and 'ftp.idm.example.com' CNAME records point to 'host03.idm.example.com'. hosts: ipaserver become: true gather_facts: false tasks: - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: idm.example.com records: - name: www cname_hostname: host03 - name: ftp cname_hostname: host03-
オプション: プレイの
- ファイルを保存します。
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-CNAME-record-is-present.yml