25.7. 为带有集成 DNS 和外部 CA 作为根 CA 的部署设置参数

完成这个流程,来为在使用 IdM 集成 DNS 解决方案的环境中安装带有外部 CA 作为根 CA 的 IdM 服务器配置清单文件。

注意

此流程中的清单文件使用 INI 格式。或者,也可以使用 YAMLJSON 格式。

步骤

  1. 创建 ~/MyPlaybooks/ 目录:

    $ mkdir MyPlaybooks
  2. 创建 ~/MyPlaybooks/inventory 文件。
  3. 打开清单文件进行编辑。指定您要用作 IdM 服务器的主机的完全限定域名(FQDN)。确保 FQDN 满足以下条件:

    • 只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
    • 主机名必须都是小写。
  4. 指定 IdM 域和域信息。
  5. 通过添加以下选项来指定您要使用集成的 DNS:

    ipaserver_setup_dns=yes
  6. 指定 DNS 转发设置。选择以下选项之一:

    • 如果您希望安装过程使用 /etc/resolv.conf 文件中的转发器,请使用 ipaserver_auto_forwarders=yes 选项。如果 /etc/resolv.conf 文件中指定的名字服务器是 localhost 127.0.0.1 地址,或者如果您在虚拟私有网络中,并且您使用的 DNS 服务器通常无法从公共互联网访问,则不建议使用此选项。
    • 使用 ipaserver_forwarders 选项手动指定您的转发器。安装过程将转发器 IP 地址添加到安装的 IdM 服务器上的 /etc/named.conf 文件中。
    • 使用 ipaserver_no_forwarders=yes 选项来配置要使用的根 DNS 服务器。

      注意

      如果没有 DNS 转发器,您的环境是隔离的,且基础架构中的其他 DNS 域的名称不能解析。

  7. 指定 DNS 反向记录和区设置。从以下选项中选择:

    • 使用 ipaserver_allow_zone_overlap=yes 选项来允许创建(反向)区域,即使区已可解析。
    • 使用 ipaserver_reverse_zones 选项来手动指定反向区。
    • 如果您不希望安装进程创建反向 DNS 区,请使用 ipaserver_no_reverse=yes 选项。

      注意

      使用 IdM 管理反向区是可选的。您可以改为使用外部 DNS 服务来实现这一目的。

  8. 指定 adminDirectory Manager 的密码。使用 Ansible Vault 来存储密码,并从 playbook 文件中引用 Vault 文件。另外,也可以更安全地指定清单文件中直接的密码。
  9. (可选)指定要由 IdM 服务器使用的自定义 firewalld 区。如果您没有设置自定义区,IdM 会将其服务添加到默认的 firewalld 区。预定义的默认区是 public

    重要

    指定的 firewalld 区必须存在,并且是永久的。

    包含所需服务器信息的清单文件示例(密码除外)

    [ipaserver]
    server.idm.example.com
    
    [ipaserver:vars]
    ipaserver_domain=idm.example.com
    ipaserver_realm=IDM.EXAMPLE.COM
    ipaserver_setup_dns=yes
    ipaserver_auto_forwarders=yes
    [...]

    包含所需服务器信息(包括密码)的清单文件示例

    [ipaserver]
    server.idm.example.com
    
    [ipaserver:vars]
    ipaserver_domain=idm.example.com
    ipaserver_realm=IDM.EXAMPLE.COM
    ipaserver_setup_dns=yes
    ipaserver_auto_forwarders=yes
    ipaadmin_password=MySecretPassword123
    ipadm_password=MySecretPassword234
    
    [...]

    带有自定义 firewalld 区的清单文件示例

    [ipaserver]
    server.idm.example.com
    
    [ipaserver:vars]
    ipaserver_domain=idm.example.com
    ipaserver_realm=IDM.EXAMPLE.COM
    ipaserver_setup_dns=yes
    ipaserver_auto_forwarders=yes
    ipaadmin_password=MySecretPassword123
    ipadm_password=MySecretPassword234
    ipaserver_firewalld_zone=custom zone
    
    [...]

  10. 为安装的第一个步骤创建一个 playbook。输入有关生成证书签名请求(CSR),并将其从控制器复制到受管节点的说明。

    ---
    - name: Playbook to configure IPA server Step 1
      hosts: ipaserver
      become: true
      vars_files:
      - playbook_sensitive_data.yml
      vars:
        ipaserver_external_ca: yes
    
      roles:
      - role: ipaserver
        state: present
    
      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: yes
  11. 为安装的最后步骤创建另一个 playbook。

    ---
    - name: Playbook to configure IPA server Step -1
      hosts: ipaserver
      become: true
      vars_files:
      - playbook_sensitive_data.yml
      vars:
        ipaserver_external_cert_files: "/root/chain.crt"
    
      pre_tasks:
      - name: Copy "{{ groups.ipaserver[0] + '-chain.crt' }}" to /root/chain.crt on node
        copy:
          src: "{{ groups.ipaserver[0] + '-chain.crt' }}"
          dest: "/root/chain.crt"
          force: yes
    
      roles:
      - role: ipaserver
        state: present

其他资源

  • 有关转发策略的默认设置,请参阅 ipa-dns-install(1) 手册页中的 --forward-policy 描述。
  • 有关 ipaserver 角色使用的 DNS 变量的更多信息,请参阅 /usr/share/doc/ansible-freeipa 目录中 README-server.md 文件中的 DNS 变量部分。
  • 有关清单文件的更多信息,请参阅 如何构建您的清单