第 4 章 使用 Ansible playbook 安装身份管理客户端

了解如何使用 Ansible 将系统配置为身份管理(IdM)客户端。将系统配置为 IdM 客户端将其注册到 IdM 域中,并让系统在域中的 IdM 服务器中使用 IdM 服务。

部署是由 ipaclient Ansible 角色来管理的。默认情况下,该角色使用 autodiscovery 模式来识别 IdM 服务器、域和其他设置。角色可以被修改为使用 Ansible playbook 使用指定的设置,例如在清单文件中。

先决条件

  • 您已在 Ansible 控制节点上安装了 ansible-freeipa 软件包。
  • 您了解 Ansible 和 IdM 概念:

    • Ansible 角色
    • Ansible 节点
    • Ansible 清单
    • Ansible 任务
    • Ansible 模块
    • Ansible play 和 playbook

4.1. 为自动发现客户端安装模式设置清单文件的参数

要使用 Ansible playbook 安装身份管理客户端,请在清单文件,如 inventory/hosts 中配置目标主机参数:

  • 有关主机的信息
  • 任务的授权

根据您拥有的清单插件,清单文件可以采用多种格式。INI 格式是 Ansible 的默认值之一,如下例中使用。

注意

要在 RHEL 中将智能卡与图形用户界面搭配使用,请确保在 Ansible playbook 中包含 ipaclient_mkhomedir 变量。

先决条件

流程

  1. 指定主机的完全限定主机名(FQDN),使其成为 IdM 客户端。完全限定域名必须是有效的 DNS 名称:

    • 仅允许数字、字母字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
    • 主机名必须都是小写。不允许使用大写字母。

    如果在 IdM DNS 区域中正确设置了 SRV 记录,该脚本会自动发现所有其他必要的值。

    只带有客户端 FQDN 定义的简单的清单主机文件示例

    [ipaclients]
    client.idm.example.com
    [...]

  2. 指定注册客户端的凭证。可用的验证方法如下:

    • 注册 客户端的用户权限的密码。这是默认选项。

      • 红帽建议使用 Ansible Vault 来存储密码,并从 playbook 文件引用 Vault 文件,如 install-client.yml

        使用来自清单文件和 Ansible Vault 文件中的密码的主体的 playbook 文件示例

        - name: Playbook to configure IPA clients with username/password
          hosts: ipaclients
          become: true
          vars_files:
          - playbook_sensitive_data.yml
        
          roles:
          - role: ipaclient
            state: present

      • inventory/hosts 文件的 [ipaclients:vars] 部分中使用 ipaadmin_password 选项来提供 admin 的凭证不太安全。或者,指定不同的授权用户,请使用 ipaadmin_principal 选项作为用户名,使用 ipaadmin_password 选项作为密码。然后,inventory/hosts 清单文件和 install-client.yml playbook 文件类似如下:

        清单主机文件示例

        [...]
        [ipaclients:vars]
        ipaadmin_principal=my_admin
        ipaadmin_password=Secret123

        使用清单文件中的主体和密码的 Playbook 示例

        - name: Playbook to unconfigure IPA clients
          hosts: ipaclients
          become: true
        
          roles:
          - role: ipaclient
            state: true

    • 之前注册的客户端 keytab,(如果其仍然可用):

      如果系统之前作为身份管理客户端注册,则可以使用这个选项。要使用此身份验证方法,请取消 #ipaclient_keytab 选项的注释,指定存储 keytab 的文件的路径,例如在 inventory/hosts[ipaclient:vars] 部分。

    • 在注册过程中生成的随机一次性密码 (OTP)。要使用此身份验证方法,请在清单文件中使用 ipaclient_use_otp=yes 选项。例如,您可以取消 inventory/hosts 文件的 [ipaclients:vars] 部分中的 ipaclient _use_otp=yes 选项的注释。请注意,对于 OTP,还必须指定以下选项之一:

      • 授权注册客户端的用户的密码 ,例如,为 inventory/hosts 文件的 [ipaclients:vars] 部分的 ipaadmin_password 提供值。
      • admin keytab,例如,为 inventory/hosts[ipaclients:vars] 部分中的 ipaadmin_keytab 提供值。
  3. [可选] 使用 ipaclient_configure_dns_resolveipaclient_dns_servers 选项(如果可用的话)指定 DNS 解析器,以简化集群部署。这在您的 IdM 部署使用集成的 DNS 时特别有用:

    指定 DNS 解析器的清单文件片段:

    [...]
    [ipaclients:vars]
    ipaadmin_password: "{{ ipaadmin_password }}"
    ipaclient_domain=idm.example.com
    ipaclient_configure_dns_resolver=true
    ipaclient_dns_servers=192.168.100.1

    注意

    ipaclient_dns_servers 列表必须仅包含 IP 地址。主机名不允许。

  4. 从 RHEL 8.9 开始,您还可以指定 ipaclient_subid: true 选项,以便为 IdM 级别上的 IdM 用户配置 subid 范围。

其它资源