第 15 章 使用 Ansible 管理 IdM 中的复制拓扑

您可以维护多个身份管理 (IdM) 服务器,并使它们相互复制,以实现冗余目的,以减少或防止服务器丢失。例如,如果一个服务器失败,其他服务器就会为域提供服务。您还可以根据剩余的服务器创建新副本来恢复丢失的服务器。

存储在 IdM 服务器上的数据会根据复制协议复制:当两台服务器配置了复制协议时,它们将共享其数据。复制的数据存储在拓扑后缀中。当两个副本在其后缀之间具有复制协议时,后缀组成一个拓扑片段(segment)

本章论述了如何使用 Red Hat Ansible Engine 管理 IdM 复制协议、拓扑片段和拓扑后缀。本章包含以下部分:

15.1. 使用 Ansible 确保 IdM 中存在复制协议

存储在身份管理 (IdM) 服务器上的数据存储基于复制协议:配置了两个服务器时,它们共享其数据。复制协议始终为现实:数据从第一个副本复制到另一个副本,另一个副本复制到第一个副本。

按照以下流程,使用 Ansible playbook 确保 server.idm.example.comreplica.idm.example.com 之间的 domain 类型的复制协议存在。

先决条件

  • 确保您了解设计 连接拓扑中 IdM 副本的指南 中列出的IdM 拓扑的建议。
  • 您知道 IdM 管理员 密码。
  • 您已配置了 Ansible 控制节点以满足以下要求:

    • 您使用 Ansible 版本 2.14 或更高版本。
    • 您已在 Ansible 控制器上安装了 ansible-freeipa 软件包。
    • 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件
    • 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password
  • 目标节点(这是执行 ansible-freeipa 模块的节点)是 IdM 域的一部分,作为 IdM 客户端、服务器或副本的一部分。

流程

  1. 进入您的 ~/MyPlaybooks/ 目录:

    $ cd ~/MyPlaybooks/
  2. 复制位于 /usr/share/doc/ansible-freeipa/playbooks/topology/ 目录中的 add-topologysegment.yml Ansible playbook 文件:

    $ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml
  3. 打开 add-topologysegment-copy.yml 文件进行编辑。
  4. 通过在 ipatopologysegment 任务部分设置以下变量来调整文件:

    • ipaadmin_password 变量设置为 IdM admin 的密码。
    • 根据您要添加的分段类型,将 suffix 变量设置为 domainca
    • left 变量设置为您要作为复制协议左侧节点的 IdM 服务器的名称。
    • right 变量设置为您要作为复制协议正确节点的 IdM 服务器的名称。
    • 确保 state 变量设置为 present

    这是当前示例修改的 Ansible playbook 文件:

    ---
    - name: Playbook to handle topologysegment
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
    - name: Add topology segment
        ipatopologysegment:
          ipaadmin_password: "{{ ipaadmin_password }}"
          suffix: domain
          left: server.idm.example.com
          right: replica.idm.example.com
          state: present
  5. 保存该文件。
  6. 运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件:

    $ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegment-copy.yml

其它资源

  • 请参阅 解释复制协议、拓扑后缀和拓扑段
  • 请参阅 /usr/share/doc/ansible-freeipa/ 目录中的 README-topology.md 文件。
  • 请参阅 /usr/share/doc/ansible-freeipa/playbooks/topology 目录中的 playbook 示例。