11.9. 导出集群配置,以创建一个 RHEL 系统角色 playbook


您可以使用 ha_cluster RHEL 系统角色将集群的 Corosync 配置导出到 ha_cluster 变量中,该变量可以反馈给角色以重新创建相同的集群。如果您没有使用 ha_cluster 创建集群,或者无法访问集群的原始 playbook,您可以使用此功能来构建用于创建集群的新的 playbook。

当您使用 ha_cluster RHEL 系统角色导出集群的配置时,并不是所有变量都会导出。您必须手动修改配置以考虑这些变量。

导出中存在以下变量:

  • ha_cluster_cluster_present
  • ha_cluster_start_on_boot
  • ha_cluster_cluster_name
  • ha_cluster_transport
  • ha_cluster_totem
  • ha_cluster_quorum
  • ha_cluster_node_options - 仅存在 node_namecorosync_addressespcs_address 选项。

导出中不存在以下变量:

  • ha_cluster_hacluster_password - 这是角色的一个强制变量,但不能从现有集群中提取。
  • ha_cluster_corosync_key_src,ha_cluster_pacemaker_key_srcha_cluster_fence_virt_key_src - 这些变量应包含带有 Corosync 和 Pacemaker 密钥的文件的路径。由于密钥本身没有导出,因此导出中也不存在这些变量。这些密钥对每个集群应该是唯一的。
  • ha_cluster_regenerate_keys - 您应该决定是否使用现有密钥或生成新密钥。

要导出当前的集群配置,请运行 ha_cluster RHEL 系统角色,并设置 ha_cluster_export_configuration: true。这会在角色完成配置集群或 qnetd 主机后触发导出,并将其存储在 ha_cluster_facts 变量中。

默认情况下,ha_cluster_cluster_present 被设为 trueha_cluster_qnetd.present 被设为 false。这些设置将在指定的主机上重新配置集群,从指定的主机中删除 qnetd 配置,然后导出配置。要在不修改现有配置的情况下触发导出,请使用以下设置运行角色:

- hosts: node1
  vars:
    ha_cluster_cluster_present: null
    ha_cluster_qnetd: null
    ha_cluster_export_configuration: true

  roles:
    - linux-system-roles.ha_cluster
Copy to Clipboard Toggle word wrap

以下流程:

  • 将集群配置从集群节点 node1 导出到 ha_cluster_facts 变量。
  • ha_cluster_cluster_presentha_cluster_qnetd 变量设置为 null,以确保运行此 playbook 不会修改现有集群配置。
  • 使用 Ansible debug 模块显示 ha_cluster_facts 的内容。
  • ha_cluster_facts 的内容以 YAML 格式保存到控制节点上的一个文件中,以便您围绕它编写 playbook。

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Export high availability cluster configuration
      hosts: node1
      Tasks:
        - name: Export configuration that does not modify existing cluster
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.ha_cluster
          vars:
            ha_cluster_cluster_present: null
            ha_cluster_qnetd: null
            ha_cluster_export_configuration: true
        - name: Print ha_cluster_info_result variable
          ansible.builtin.debug:
            var: ha_cluster_facts
        - name: Save current cluster configuration to a file
          delegate_to: localhost
          ansible.builtin.copy:
            content: "{{ ha_cluster_facts | to_nice_yaml(sort_keys=false) }}"
            dest: /path/to/file
            mode: "0640"
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    hosts: node1
    包含要导出的集群信息的节点。
    ha_cluster_cluster_present: null
    设置以指示集群配置将不会在指定主机上更改。
    ha_cluster_qnetd: null
    设置以指示 qnetd 主机配置将不会在指定主机上更改。
    ha_cluster_export_configuration: true
    一个决定是否导出当前集群配置并将其存储在 ha_cluster_facts 变量中的变量,该变量由 ha_cluster_info 模块生成。
    ha_cluster_facts
    一个包含导出的集群配置的变量。
    delegate_to: localhost
    将控制节点指定为导出配置文件的位置。
    content: "{{ ha_cluster_facts | to_nice_yaml(sort_keys=false) }"}, dest: /path/to/file, mode: "0640"

    将 YAML 格式的配置文件复制到 /path/to/file,将文件权限设置为 0640。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md 文件。

  2. 使用您在控制节点上导出到 /path/to/file 的变量来为您的系统编写 playbook。

    您必须添加 ha_cluster_hacluster_password 变量,因为它是一个必要的变量,但在导出中不存在。(可选)添加 ha_cluster_corosync_key_src,ha_cluster_pacemaker_key_src,ha_cluster_fence_virt_key_src, 和 ha_cluster_regenerate_keys 变量(如果您的系统需要它们)。这些变量永远不会被导出。

  3. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  4. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat