29.9. Ansible を使用して、統合された eDNS と外部ルート CA を備えた IdM サーバーをインストールする
ansible-freeipa パッケージで利用可能な ipaserver ロールを使用して、DNS-over-TLS (DoT) が有効になっている Identity Management (IdM) サーバーをインストールできます。
enforced ポリシーまたは relaxed ポリシーのいずれかを選択できます。デフォルトでは、インストーラーは relaxed ポリシーを使用します。このポリシーは DoT を試行しますが、セキュアな接続を確立できない場合は標準の暗号化されていない DNS へのフォールバックを許可します。enforced ポリシーを適用するには、Ansible Playbook の vars セクションで ipaserver_dns_policy 変数を enforced に設定します。
統合された IdM 認証局 (CA) が発行した証明書を使用することも、外部 CA が発行したカスタム証明書を提供することもできます。証明書を提供しない場合、IdM CA はインストール中に自動的に DoT 証明書を発行します。
前提条件
- Ansible バージョン 2.15 以降を使用している。
-
ansible-freeipaパッケージがインストールされている。 -
secret.ymlAnsible vault にipaadmin_passwordが保存されており、secret.ymlファイルを保護するパスワードを格納しているファイルにアクセスできる (この例の場合)。 - IdM サーバーをインストールするためのシステムの準備 で概説されている手順を確認している。
-
enforcedDoT の場合は、DoT のみを使用するようにクライアントシステムとレプリカシステムを設定する の手順を完了している。
手順
オプション: 外部認証局が発行した DoT 用のカスタム PEM 形式の証明書とキーを使用する場合:
IdM サーバーをインストールするホストに SSH で接続します。
$ ssh root@server.idm.example.com2 つのファイルを作成し、
namedデーモンに所有権を割り当てます。# openssl req \ -newkey rsa:2048 \ -nodes \ -keyout /etc/pki/tls/certs/privkey.pem \ -x509 \ -days 36500 \ -out /etc/pki/tls/certs/certificate.pem \ -subj "/C=<country_code>/ST=<state>/L=<location>/O=<organization>/OU=<organizational_unit>/CN=<idm_server_fqdn>/emailAddress=<email>" && \ chown named:named /etc/pki/tls/certs/privkey.pem /etc/pki/tls/certs/certificate.pemIdM サーバー上の SSH セッションを終了します。
# exit
Ansible コントローラーで、外部 CA を使用して IdM サーバーをインストールするための手順を記述した
install-server-external-ca-step1.ymlという名前の Playbook ファイルを作成します。--- - name: Playbook to configure IPA server Step 1: generate CSR for IdM external CA setup hosts: ipaserver become: true vars_files: - /home/user_name/MyPlaybooks/secret.yml vars: ipaserver_domain: idm.example.com ipaserver_realm: IDM.EXAMPLE.COM ipaserver_hostname: server.idm.example.com ipaadmin_password: "{{ vault_admin_password }}" ipadm_password: "{{ vault_dm_password }}" ipaserver_setup_dns: true ipaserver_dot_forwarders: - "<server_ip>#<dns_server_hostname>" ipaserver_external_ca: true ipaserver_dns_over_tls: true ipaserver_no_dnssec_validation: true ipaserver_auto_reverse: true roles: - role: freeipa.ansible_freeipa.ipaserver post_tasks: - name: Copy CSR /root/ipa.csr from node to "{{ groups.ipaserver[0] + '-ipa.csr' }}" fetch: src: /root/ipa.csr dest: "{{ groups.ipaserver[0] + '-ipa.csr' }}" flat: true外部認証局によって発行された DoT 用のカスタム PEM 形式の証明書とキーを使用している場合は、
varsセクションに以下を追加します。ipaserver_dns_over_tls_cert: /etc/pki/tls/certs/certificate.pem ipaserver_dns_over_tls_key: /etc/pki/tls/certs/privkey.pemインストールの最初のステップの指示に従って、Ansible Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-external-ca-step1.yml-
コントローラー上の
ipa.csr証明書署名要求ファイルを見つけ、これを外部 CA に送信します。 - 次のステップの Playbook が見つけられるように、外部 CA によって署名された IdM CA 証明書と CA 証明書チェーンをコントローラーファイルシステムに配置します。
IdM サーバーのインストールの 2 番目のステップ用に、次の内容を含む新しい Ansible Playbook (例:
install-server-external-ca-step2.yml) を作成します。--- - name: Playbook to configure IdM server Step 2: import certificates and finalize installation hosts: ipaserver become: true vars_files: - /home/user_name/MyPlaybooks/secret.yml vars: ipaserver_domain: idm.example.com ipaserver_realm: IDM.EXAMPLE.COM ipaserver_hostname: server.idm.example.com ipaadmin_password: "{{ vault_admin_password }}" ipadm_password: "{{ vault_dm_password }}" ipaserver_setup_dns: true ipaserver_dot_forwarders: - "<server_ip>#<dns_server_hostname>" ipaserver_external_ca: true ipaserver_dns_over_tls: true ipaserver_no_dnssec_validation: true ipaserver_auto_reverse: true ipaserver_external_cert_files: - servercert20240601.pem - cacert.pem pre_tasks: - name: Copy "{{ groups.ipaserver[0] }}-{{ item }}" to "/root/{{ item }}" on node ansible.builtin.copy: src: "{{ groups.ipaserver[0] }}-{{ item }}" dest: "/root/{{ item }}" force: true with_items: - servercert20240601.pem - cacert.pem roles: - role: freeipa.ansible_freeipa.ipaserver state: presentインストールの最後の手順の指示に従って、Ansible Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-external-ca-step2.yml
トラブルシューティング
IdM サーバーに
SSH接続します。# ssh root@server.idm.example.comunboundサービスの詳細ロギングを有効にします。# unbound-control verbosity 3更新された設定を適用するには、
unboundサービスを再起動します。# systemctl restart unboundunboundサービスのリアルタイムログを監視します。$ journalctl -u unbound -f