第 26 章 使用 Ansible playbook 安装身份管理副本
使用 Ansible 将系统配置为 IdM 副本,来将其注册到 IdM 域,并让系统使用域中 IdM 服务器上的 IdM 服务。
部署是由 ipareplica
Ansible 角色来管理的。该角色可以使用自动发现模式来识别 IdM 服务器、域和其他设置。但是,如果您在类似层的模式中部署多个副本,在不同时间部署了不同的副本组,则必须为每个组定义特定的服务器或副本。
先决条件
- 您已在 Ansible 控制节点上安装了 ansible-freeipa 软件包。
- 您了解了一般的 Ansible 和 IdM 概念。
- 您已 在部署中计划了副本拓扑。
26.1. 指定用于安装 IdM 副本的基础、服务器和客户端变量
完成这个步骤来配置用于安装 IdM 副本的清单文件。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您使用 Ansible 版本 2.15 或更高版本。
-
您已在 Ansible 控制器上安装了
ansible-freeipa
软件包。
流程
打开清单文件进行编辑。指定要成为 IdM 副本的主机的完全限定域名(FQDN)。FQDN 必须是有效的 DNS 名称:
-
仅允许数字、字母字符和连字符(
-
)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。
仅定义副本 FQDN 的简单清单主机文件示例
[ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...]
如果 IdM 服务器已经部署,且在 IdM DNS 区中正确设置了 SRV 记录,那么脚本会自动发现所有其他必需的值。
-
仅允许数字、字母字符和连字符(
可选:根据您是如何设计拓扑的,来在清单文件中提供额外的信息:
- 场景 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
如果您在一个批处理中部署多个副本,并且时间是您关心的问题,那么多层副本部署可能对您很有用。在清单文件中定义特定的副本组,如
[ipareplicas_tier1]
和[ipareplicas_tier2]
,并在install-replica.yml
playbook 中为每个组设计单独的 play。定义了副本层的清单文件示例
[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 副本时,您必须在 playbook 中有单独的任务来首先从 tier1 部署副本,然后从 tier2 部署副本。为不同副本组使用不同 play 的 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
可选:提供有关
firewalld
和 DNS 的其它信息:- 场景 1
如果您希望副本使用指定的
firewalld
区域,如内部区域,您可以在清单文件中指定它。如果您没有设置自定义区,IdM 会将其服务添加到默认的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=true 行添加到
[ipareplicas:vars]
部分中。另外,请指定您是否要使用每服务器 DNS 转发器:-
要配置每服务器转发器,请将
ipareplica_forwarders
变量和字符串列表添加到[ipareplicas:vars]
部分,例如:ipareplica_forwarders=192.0.2.1,192.0.2.2 -
要配置无每服务器转发器,请将以下行添加到
[ipareplicas:vars]
部分中:ipareplica_no_forwarders=true。 -
要根据副本的
/etc/resolv.conf
文件中列出的转发器配置每服务器转发器,请将ipareplica_auto_forwarders
变量添加到[ipareplicas:vars]
部分。
带有在副本上设置 DNS 和每个服务器转发器的指令的清单文件示例
[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...] [ipareplicas:vars] ipareplica_setup_dns=true 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 地址。主机名不允许。
其他资源
-
/usr/share/ansible/roles/ipareplica/README.md