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


从 RHEL 9.6 开始,您可以使用 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_enable_repos
  • ha_cluster_enable_repos_resilient_storage
  • ha_cluster_manage_firewall
  • ha_cluster_manage_selinux
  • ha_cluster_install_cloud_agents
  • ha_cluster_pcs_permission_list
  • ha_cluster_resource_primitives
  • ha_cluster_resource_groups
  • ha_cluster_resource_clones
  • ha_cluster_resource_bundles
  • ha_cluster_cluster_properties
  • ha_cluster_resource_defaults
  • ha_cluster_resource_operation_defaults
  • ha_cluster_constraints_location
  • ha_cluster_constraints_colocation
  • ha_cluster_constraints_order
  • ha_cluster_constraints_ticket

导出中不存在以下变量:

  • 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_hacluster_qdevice_password - 指定仲裁设备上 ha_cluster 用户的密码。在使用仲裁设备避免手动干预时,这是必需的设置。无法从现有集群中提取它。
  • ha_cluster_fence_agent_packages - 要安装的隔离代理软件包列表。
  • ha_cluster_extra_packages - 指定要在集群节点上安装的任何额外软件包。
  • ha_cluster_use_latest_packages - 当设置为 true 时,系统角色为集群使用最新的可用软件包。
  • ha_cluster_pcsd_public_key_src,ha_cluster_pcsd_private_key_src - 变量包含到 pcsd 的 TLS 证书和私钥的路径。由于证书和密钥本身没有导出,因此导出中没有存在这些变量。
  • ha_cluster_pcsd_certificates - 当设置了此变量时,证书 RHEL 系统角色在内部用于为 pcsd 创建私钥和证书。无法从现有集群中提取它。

要导出当前的集群配置,请运行 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

以下流程:

  • 将集群配置从集群节点 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"

    示例 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。
  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

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

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
  4. 在导出了当前集群配置后,您可以使用控制节点上的 /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 变量(如果您的系统需要它们)。这些变量永远不会被导出。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部