配置 Red Hat Satellite 以使用 Ansible


Red Hat Satellite 6.11

在 Satellite 中配置 Ansible,以帮助自动执行重复性任务

Red Hat Satellite Documentation Team

摘要

本指南介绍了如何设置并配置 Red Hat Satellite,以使用 Ansible 执行远程执行和自动化重复性任务。

向红帽文档提供反馈

我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。

您可以通过在 Bugzilla 中记录一个 ticket 来提交反馈:

  1. 导航到 Bugzilla 网站。
  2. Component 字段中,使用 Documentation
  3. Description 字段中,输入您要改进的建议。包括文档相关部分的链接。
  4. Submit Bug

第 1 章 在 Satellite 中使用 Ansible

使用本指南将 Satellite 配置为使用 Ansible,然后了解如何使用 Ansible 进行远程执行。

1.1. 支持的 Ansible 版本

Satellite 使用 Ansible,由 Satellite 服务器的基本操作系统提供,或任何 Capsule 用于远程执行。因此,支持的 Ansible 版本取决于您的基础操作系统配置。

1.2. 配置部署以运行 Ansible 角色

在 Satellite 中,您可以导入 Ansible 角色来帮助自动化日常任务。在 Satellite 服务器上默认启用 Ansible。

Ansible 路径

Satellite 根据 /etc/ansible/ansible.cfg 中的配置从路径导入 Ansible 角色变量。然后,Satellite 根据 /etc/foreman-proxy/ansible.cfg 中的配置从路径运行导入的角色。在这两种情况下,Satellite 从 roles_pathcollections_paths 指令读取路径。将这两个 cfg 文件保持同步,否则您可以导入无法运行的角色,否则您不会看到您可以运行的角色。

如果在配置文件中没有指定任何路径,则会使用以下默认路径:

  • /etc/ansible/roles
  • /usr/share/ansible/roles
  • /etc/ansible/collections
  • /usr/share/ansible/collections

流程

  1. 在 Satellite 服务器和您要使用角色的所有 Capsule 服务器中配置 Ansible 路径
  2. 将角色添加到 Satellite 服务器上的 Ansible 路径中 的目录,以及您要使用该角色的所有 Capsule 服务器。如果要使用自定义或第三方 Ansible 角色,请确保配置外部版本控制系统,以在 Satellite 服务器和 Capsule 服务器之间同步角色。
  3. 在您要用来在主机上运行 Ansible 角色的所有 Capsule 服务器上,启用 Ansible 插件:

    # satellite-installer --scenario capsule \
    --enable-foreman-proxy-plugin-ansible
    Copy to Clipboard Toggle word wrap
  4. 分发 SSH 密钥,使胶囊能够使用 SSH 连接到主机。如需更多信息,请参阅 管理主机 中的 为远程执行分配 SSH 密钥。Satellite 运行 Ansible 角色的方式与运行远程执行任务相同。
  5. 将 Ansible 角色导入到 Satellite。
  6. 继续 第 2 章 使用 Ansible 角色在 Satellite 主机上自动化重复任务

1.3. 导入 Ansible 角色和变量

您可以从启用了 Ansible 的 Satellite 服务器或 Capsule 上的 Ansible 路径 导入 Ansible 角色和变量。

请注意,一些角色导入所需的时间比其他角色要长。

前提条件

  • 确保导入的角色和权限位于您要使用角色的所有 Capsule 上的 Ansible 路径中

流程

  1. 在 Satellite Web UI 中,导航到 Configure > Roles
  2. 单击 Import,以选择要从中导入的 Capsule。
  3. 选择您要导入的角色。
  4. Submit

1.4. 覆盖 Satellite 中的 Ansible 变量

如果在 Satellite 中运行 Ansible 角色,您可以使用 Satellite 覆盖这些角色的 Ansible 变量。

以下流程指的是主机和主机组。如需更多信息,请参阅管理主机

覆盖变量的优先级

如果您使用 Ansible 角色以不是 Effective User 的用户运行任务,则覆盖 Ansible 变量会有一个严格的优先级顺序。要确保您覆盖的变量遵循正确的优先级顺序,请参阅 变量优先级:我应该放置变量?

前提条件

流程

  1. 在 Satellite Web UI 中,导航到 Configure > Variables
  2. 选择您要使用 Satellite 覆盖和管理的 Ansible 变量。
  3. 默认行为 区域中,选中 Override 复选框。
  4. Parameter Type 字段中,选择验证的值类型,如 字符串布尔值。types 数组和 哈希 具有在变量匹配时处理的更多选项。如需更多信息 ,请参阅下面的 属性顺序 区域
  5. Default Value 字段中,如果变量没有匹配项,请输入您要使用的默认值。
  6. 可选:如果您不想在 Satellite Web UI 中以纯文本形式显示变量的值,请选择 Hidden Value 复选框,以将变量的值显示为星号。这对敏感值(如密码或机密令牌)非常有用。
  7. 可选:扩展 Optional Input Validator 区域,并指定用于验证变量的值的条件:

    • 如果要强制用户填写此变量,请选择 Required
    • Validator Type 字段中,选择如何验证值:

      • list - 该值将根据允许的值枚举进行验证。
      • regex - 该值将根据正则表达式模式进行验证。
  8. 可选: 优先级属性顺序 区域中,指定优先级顺序,按主机属性与主机匹配。顶部的顺序具有更高的优先级。第一个匹配项为 wins。

    您可以使用逗号作为 AND 操作将多个属性合并到一个匹配器键中。例如,hostgroup 的 matcher 键,环境 预期匹配者,如 hostgroup = "web servers" AND environment = production

    如果使用参数类型 数组哈希,您可以进一步设置:

    • merge Overrides - Merges 数组/哈希的成员,而不是替换整个数组或哈希。如果哈希包含相同的键,则该值会被主机的值覆盖。
    • merge Default - 将默认值添加到数组或散列中。
    • 避免 Duplicates - 确保数组或散列中的值是唯一的。
  9. 可选:扩展 指定匹配 器区域,并指定用于选择变量覆盖的主机的条件。
  10. 若要保存覆盖设置,请单击 Submit

要使用 Ansible 变量,请将变量作为参数添加到主机或主机组,或者将变量添加为全局参数。

将变量添加到主机

  1. 在 Satellite Web UI 中,导航到 Hosts > All Hosts 并选择您要使用的主机。
  2. 单击 Ansible 选项卡,然后在 变量 区域中,单击铅笔图标以编辑变量的值。
  3. 点 tick 图标接受更改的变量的值或跨图标来取消更改。

将变量添加到主机组

  1. 在 Satellite Web UI 中,导航到 Configure > Host Groups,然后选择您要使用的主机组。
  2. 单击 Parameters 选项卡,然后在 Host Group Parameters 区域中,单击 Add Parameter
  3. Name 字段中,添加 Ansible 变量名称。
  4. Type 列表中,选择验证的变量类型。
  5. Value 字段中,输入 变量的值。

将变量添加为全局参数

  1. 在 Satellite Web UI 中,导航到 Configure > Global Parameters,然后点 Create Parameter
  2. Name 字段中,添加 Ansible 变量名称。
  3. Type 列表中,选择验证的变量类型。
  4. Value 字段中,输入 变量的值。
  5. 可选:如果您不想以纯文本显示 Ansible 变量,请选择 Hidden Values 复选框,以在 Satellite Web UI 中将变量的内容显示为星号。

1.5. 添加 Red Hat Enterprise Linux 系统角色

Red Hat Enterprise Linux 系统角色是远程管理 Red Hat Enterprise Linux 服务器的配置界面。您可以使用 Red Hat Enterprise Linux 系统角色在 Satellite 中添加 Ansible 角色。在 Satellite 中使用 Ansible 角色可以更快、更轻松地配置。

一些 Red Hat Enterprise Linux 系统角色的支持级别可能只是一个技术预览。有关支持级别和有关 Red Hat Enterprise Linux 系统角色的常规信息,请参阅 Red Hat Enterprise Linux 系统角色

在订阅 Extras 频道前,请查看 Red Hat Enterprise Linux Extras 产品生命周期 文章。

流程

  1. 确保启用了以下软件仓库:

    • 在 Red Hat Enterprise Linux 7 中,确保启用了 Extras 软件仓库:

      # subscription-manager repos --enable=rhel-7-server-extras-rpms
      Copy to Clipboard Toggle word wrap
    • 在 Red Hat Enterprise Linux 8 中,确保启用了 Appstream 软件仓库:

      # subscription-manager repos --enable=rhel-8-for-architecture-appstream-rpms
      Copy to Clipboard Toggle word wrap

      您必须启用为您的架构指定的 Appstream 存储库。如需更多信息,请参阅 RHEL 8 软件仓库

  2. 安装 rhel-system-roles 软件包。

    # satellite-maintain packages install rhel-system-roles
    Copy to Clipboard Toggle word wrap

    rhel-system-roles 软件包下载到 /usr/share/ansible/roles/。您可以在导入前查看并进行修改。

  3. 在 Satellite Web UI 中,导航到 Configure > Roles,再点击包含您要导入的角色的 Capsule。
  4. 从 Ansible 角色列表中,选择您要导入的角色的复选框,然后单击 Update

现在,您可以将 Ansible 角色分配给主机或主机组。更多信息请参阅 第 2.1 节 “将 Ansible 角色分配给现有主机”

您还可以通过将它们添加到 Ansible 作业模板,将这些角色中包含的模块添加到 Ansible playbook 中。您必须在作业模板中包含 hosts:all 行。如需更多信息,请参阅 Red Hat Enterprise Linux (RHEL)系统角色

1.6. 同步 Ansible Collections

在 Satellite 上,您可以同步来自 Private Automation Hub、console.redhat.com 和其他 Satellite 实例的 Ansible Collections。同步后,Ansible Collections 将作为 Satellite Web UI 菜单中的新存储库类型出现在 Satellite 上。

注意

Ansible Collections 存在于库环境中,且不支持生命周期管理。Pulp 3 的 Capsule 具有集合支持,如果与库环境关联,将同步集合存储库。您还可以使用 Export 功能进行 Satellite 同步。

流程

  1. 在 Satellite Web UI 中,导航到 Content > Products
  2. 选择所需的产品名称。
  3. Products 窗口中,选择要为其创建存储库的产品名称。
  4. 单击 Repositories 选项卡,然后单击 New Repository
  5. Name 字段中输入存储库的名称。

    Label 字段会根据名称自动填充。

  6. Type 列表中,选择 ansible collection
  7. Upstream URL 字段中,输入上游集合存储库的 URL。

    URL 可以是任何 Galaxy 端点。例如: https://console.redhat.com/api/automation-hub/

  8. 可选:在 Requirements.yml 字段中,您可以指定您要从端点同步的集合列表,以及它们的版本。

    如果没有指定集合列表,则端点中的所有内容都会被同步。

    ---
    collections:
    - name: my_namespace.my_collection
      version: 1.2.3
    Copy to Clipboard Toggle word wrap

    有关更多信息,请参阅 Galaxy 用户指南中的 安装带有要求文件的多个集合

  9. 身份验证。

    1. 要从 Private Automation Hub 同步 Satellite,请在 Auth Token 字段中输入您的令牌。

      如需更多信息,请参阅 连接到 Hub 指南中的 Connect Private Automation Hub

    2. 要从 console.redhat.com 同步 Satellite,请在 Auth Token 字段中输入您的令牌,然后在 Auth URL 字段中输入您的 SSO URL。

      如需更多信息,请参阅开始使用自动化中心

    3. 要从 Satellite 同步 Satellite,请将两个身份验证字段留空。
  10. 点击 Save
  11. 导航到 Ansible Collections 存储库。
  12. Select Action 菜单中,选择 Sync Now

2.1. 将 Ansible 角色分配给现有主机

您可以使用 Ansible 角色远程管理 Red Hat Enterprise Linux 8、7 和 6.9 或更高版本。

前提条件

  • 确保您已配置并导入了 Ansible 角色。

流程

  1. 在 Satellite Web UI 中,导航到 Hosts > All Hosts
  2. 选择主机并点击 Edit
  3. Ansible Roles 选项卡上,从 Available Ansible Roles 列表中选择您要添加的角色。
  4. + 图标将角色添加到主机。您可以添加多个角色。
  5. Submit

将 Ansible 角色分配到主机后,您可以使用 Ansible 进行远程执行。更多信息请参阅 第 3.8 节 “为远程执行分发 SSH 密钥”

覆盖参数变量

Parameters 选项卡中,单击 Add Parameter 以添加您要在运行时传递给作业模板的任何参数变量。这包括您要与主机关联的所有 Ansible playbook 参数和主机参数。要将参数变量与 Ansible 作业模板搭配使用,您必须添加 Host 参数

2.2. 从主机中删除 Ansible 角色

使用以下步骤从主机中删除 Ansible 角色。

流程

  1. 在 Satellite Web UI 中,导航到 Hosts > All Hosts
  2. 选择主机并点击 Edit
  3. 选择 Ansible Roles 选项卡。
  4. Assigned Ansible Roles 区域中,点 - 图标从主机中删除角色。重复以移除更多角色。
  5. Submit

2.3. 更改 Ansible 角色的顺序

使用以下步骤更改应用到主机的 Ansible 角色的顺序。

流程

  1. 在 Satellite Web UI 中,导航到 Hosts > All Hosts
  2. 选择主机。
  3. 选择 Ansible Roles 选项卡。
  4. 分配 Ansible Roles 区域中,您可以通过拖动角色并将其丢弃到首选位置来更改角色的顺序。
  5. Submit 保存 Ansible 角色的顺序。

2.4. 在主机上运行 Ansible 角色

您可以通过 Satellite Web UI 在主机上运行 Ansible 角色。

前提条件

流程

  1. 在 Satellite Web UI 中,导航到 Hosts > All Hosts
  2. 选中包含您要运行的 Ansible 角色的主机复选框。
  3. Select Action 列表中,选择 Run all Ansible roles

您可以在 Run Ansible roles 页面中查看 Ansible 作业的状态。要重新运行作业,请点击 重新运行 按钮。

2.5. 将 Ansible 角色分配给主机组

您可以使用 Ansible 角色远程管理 Red Hat Enterprise Linux 8、7 和 6.9 或更高版本。

前提条件

流程

  1. 在 Satellite Web UI 中,导航到 Configure > Host Groups
  2. 单击您要为其分配 Ansible 角色的主机组名称。
  3. Ansible Roles 选项卡上,从 Available Ansible Roles 列表中选择您要添加的角色。
  4. + 图标将角色添加到主机组。您可以添加多个角色。
  5. Submit

2.6. 在主机组上运行 Ansible 角色

您可以通过 Satellite Web UI 在主机组上运行 Ansible 角色。

前提条件

流程

  1. 在 Satellite Web UI 中,导航到 Configure > Host Groups
  2. 从主机组的 Actions 列中的列表中,选择 Run all Ansible roles

您可以在 Run Ansible roles 页面中查看 Ansible 作业的状态。要重新运行作业,请点击 重新运行 按钮。

2.7. 在检查模式下运行 Ansible 角色

您可以通过 Satellite Web UI 以检查模式运行 Ansible 角色。

前提条件

流程

  1. 在 Satellite Web UI 中,导航到 Hosts &gt ; All Hosts
  2. 点您要为其启用检查模式的主机的 Edit
  3. Parameters 选项卡中,确保主机有一个名为 ansible_roles_check_mode 的参数,并将 type boolean 设置为 true
  4. Submit

第 3 章 配置和设置远程作业

使用本节作为配置 Satellite 在远程主机上执行任务的指南。

要应用到远程主机的任何命令都必须定义为作业模板。定义了作业模板后,您可以多次执行它。

3.1. 关于在主机上运行作业

您可以使用 shell 脚本或 Ansible 任务和 playbook 在主机上远程运行作业。这称为远程执行。

对于您创建的自定义 Ansible 角色,或您下载的角色,您必须在 Capsule 基础操作系统上安装包含角色的软件包。在使用 Ansible 角色之前,您必须将角色从安装它们的 Capsule 中导入到 Satellite。

通信通过 Capsule 服务器进行,这意味着 Satellite 服务器不需要直接访问目标主机,并可扩展以管理许多主机。远程执行使用必须启用并在目标主机上运行的 SSH 服务。确保远程执行 Capsule 能够访问目标主机上的端口 22。

Satellite 使用 ERB 语法作业模板。如需更多信息,请参阅 管理主机 指南中的编写参考 的模板。

默认包含多个 shell 脚本和 Ansible 的作业模板。如需更多信息,请参阅设置作业模板

注意

任何 Capsule 服务器基础操作系统都是 Satellite 服务器内部胶囊的客户端,因此本节适用于连接到 Satellite 服务器的任何类型的主机,包括 Capsule。

您可以一次在多个主机上运行作业,您可以使用命令中的变量更精细的控制您运行的作业。您可以使用主机事实和参数来填充变量值。

另外,您可以在运行命令时为模板指定自定义值。

如需更多信息 ,请参阅执行远程作业

3.2. 远程执行工作流

当您在主机上运行远程作业时,Satellite 都会执行以下操作来查找要使用的远程执行胶囊:

Satellite 仅搜索启用了 Ansible 功能的 Capsule。

  1. Satellite 找到选择了 Remote execution 复选框的主机接口。
  2. Satellite 找到这些接口的子网。
  3. Satellite 找到分配给这些子网的远程执行胶囊。
  4. 从这一组 Capsules 中,Satellite 选择具有最少运行作业的 Capsule。通过这样做,Satellite 可确保在远程执行胶囊之间平衡作业负载。

如果您为远程执行启用了 Prefer 通过 Capsule 注册,Satellite 会使用主机注册到的 Capsule 运行 REX 作业。

默认情况下,针对远程执行通过 Capsule 注册 Prefer 将设置为 No。要启用它,在 Satellite Web UI 中,导航到 Administer > Settings,然后在 Content 选项卡中,将 Prefer registered through Capsule 设置为 Yes。这样可确保 Satellite 在由注册到的 Capsule 的主机上执行 REX 作业。

如果 Satellite 在此阶段找不到远程执行胶囊,如果启用了 Fallback to any Capsule 设置,Satellite 会添加另一组 Capsules 来从中选择远程执行胶囊。Satellite 从分配给主机的以下类型的 Capsule 中选择最轻量级的 Capsule:

  • 分配给主机子网的 DHCP、DNS 和 TFTP 胶囊
  • 分配给主机的域的 DNS Capsule
  • 分配给主机的域的 realm Capsule
  • Puppet 服务器 Capsule
  • Puppet CA Capsule
  • OpenSCAP Capsule

如果 Satellite 在此阶段找不到远程执行胶囊,如果启用了 Enable Global Capsule 设置,Satellite 会从主机的机构和位置集合中选择最轻量级的远程执行胶囊。

3.3. 远程执行的权限

您可以控制哪些角色可以在基础架构中运行哪些作业,包括他们可以目标的主机。远程执行功能提供两个内置角色:

  • 远程执行管理器 :可以访问所有远程执行功能和功能。
  • 远程执行用户 :只能运行作业。

您可以克隆 远程执行用户角色 并自定义其过滤器以增加粒度。如果您使用自定义角色的 view_job_templates 权限调整过滤器,则只能根据匹配的作业模板查看并触发作业。您可以使用 view_hostsview_smart_proxies 权限来限制角色可以看到哪些主机或 Capsule。

execute_template_invocation 权限是一个特殊权限,它会在执行任务开始前立即检查。此权限定义您可以在特定主机上运行的作业模板。这在指定权限时允许更多粒度。

您可以针对 Red Hat Satellite 和 Capsule 作为 Red Hat Satellite 的主机运行远程执行作业,并具有 execute_jobs_on_infrastructure_hosts 权限。默认情况下,标准 管理器和站点管理器 角色具有此权限。如果使用 ManagerSite Manager 角色,或者使用带有 execute_jobs_on_infrastructure_hosts 权限的自定义角色,您可以针对注册的 Red Hat Satellite 和 Capsule 主机执行远程作业。

有关使用角色和权限的更多信息,请参阅 管理 Red Hat Satellite 指南中的创建和管理角色

以下示例显示了 execute_template_invocation 权限的过滤器:

name = Reboot and host.name = staging.example.com
name = Reboot and host.name ~ *.staging.example.com
name = "Restart service" and host_group.name = webservers
Copy to Clipboard Toggle word wrap

使用此示例中的第一行,将 Reboot 模板应用到所选主机。使用第二行定义名称以 .staging.example.com 结尾的主机池。使用第三行将模板与主机组绑定。

注意

分配给具有这些角色的用户的权限可能会随着时间而改变。如果您已将一些作业调度到将来运行,且权限更改,这可能会导致执行失败,因为权限会在作业执行前立即检查。

3.4. 创建作业模板

使用这个流程创建作业模板。要使用 CLI 而不是 Satellite Web UI,请参阅 CLI 过程

流程

  1. 在 Satellite Web UI 中,导航到 Hosts > Job templates
  2. 单击 New Job Template
  3. Template 选项卡,在 Name 字段中输入作业模板的唯一名称。
  4. 选择 Default,使模板可用于所有机构和位置。
  5. 在模板编辑器中直接创建模板,或通过单击 Import 从文本文件上传该模板。
  6. 可选:在 Audit 注释 字段中,添加有关更改的信息。
  7. 单击 Job 选项卡,并在 Job category 字段中输入您自己的类别,或者从 Default Job Template Categories 中列出的默认类别中选择。
  8. 可选:在 Description Format 字段中输入描述模板。例如,安装 package %{package_name}。您还可以在模板中使用 %{template_name}%{job_category}
  9. Provider Type 列表中,为 shell 脚本选择 SSH,为 Ansible 任务或 playbook 选择 Ansible。
  10. 可选:在 Timeout to kill 字段中,输入超时值来终止作业(如果它未完成)。
  11. 可选:点 Add Input 来定义输入参数。执行作业时请求参数,且不必在模板中定义参数。例如,请参阅 Help 选项卡。
  12. 可选:点击 Foreign 输入集 来在此作业中包含其他模板。
  13. 可选: 在 Effective 用户 区域中,如果命令无法使用默认的 remote_execution_effective_user 设置,则配置用户。
  14. 可选:如果此模板是包含在其他模板中的代码片段,点 Type 选项卡并选择 Snippet
  15. Location 选项卡,再添加您要使用模板的位置。
  16. 单击 Organizations 选项卡,再添加您要使用该模板的组织。
  17. Submit 保存您的更改。

您可以通过在模板语法中包含其他模板来扩展和自定义作业模板。如需更多信息,请参阅 管理主机指南中的附加信息

CLI 过程

  1. 要使用模板确定的文件创建作业模板,请输入以下命令:

    # hammer job-template create \
    --file "path_to_template_file" \
    --name "template_name" \
    --provider-type SSH \
    --job-category "category_name"
    Copy to Clipboard Toggle word wrap

您可以启用 Fallback to any Capsule 设置,将 Satellite 配置为从分配给主机的 Capsule 列表中搜索远程执行 Capsule。如果您需要在没有配置子网的主机上运行远程作业,或者主机子网分配给没有启用远程执行功能的 Capsule,这将非常有用。

如果启用了 Fallback to any Capsule 设置,Satellite 会添加另一组 Capsules 来从中选择远程执行胶囊。Satellite 还从分配给主机的所有胶囊集合中选择最轻便的 Capsule,例如:

  • 分配给主机子网的 DHCP、DNS 和 TFTP 胶囊
  • 分配给主机的域的 DNS Capsule
  • 分配给主机的域的 realm Capsule
  • Puppet 服务器 Capsule
  • Puppet CA Capsule
  • OpenSCAP Capsule

流程

  1. 在 Satellite Web UI 中,导航到 Administer > Settings
  2. Remote Execution
  3. 将 Fallback 配置为任何 Capsule 设置。

CLI 过程

在 Satellite 中输入 hammer settings set 命令,将 Fallback 配置为任何 Capsule 设置。例如,要将值设为 true,请输入以下命令:

# hammer settings set --name=remote_execution_fallback_proxy --value=true
Copy to Clipboard Toggle word wrap

3.6. 在 Satellite 中配置全局胶囊远程执行设置

默认情况下,Satellite 在主机的机构和位置中搜索远程执行 Capsule,无论 Capsule 是否分配给主机的子网。如果要将搜索限制为分配给主机的子网的 Capsule,您可以禁用 Enable Global Capsule 设置。

如果启用了 Enable Global Capsule 设置,Satellite 会添加另一组 Capsules 来从中选择远程执行胶囊。Satellite 还从主机的机构和位置,选择最轻便的远程执行胶囊,以执行远程作业。

流程

  1. 在 Satellite Web UI 中,导航到 Administer > Settings
  2. Remote Execution
  3. 配置 Enable Global Capsule 设置。

CLI 过程

  • 在 Satellite 中输入 hammer settings set 命令,以配置 Enable Global Capsule 设置。例如,要将值设为 true,请输入以下命令:

    # hammer settings set --name=remote_execution_global_proxy --value=true
    Copy to Clipboard Toggle word wrap

Ansible 将自己的文件放在 $HOME/.ansible/tmp 目录中,其中 $HOME 是远程用户的主目录。如果需要,您可以选择设置不同的目录。

流程

  1. 创建新目录,如 new_place

    # mkdir /remote_working_dir
    Copy to Clipboard Toggle word wrap
  2. 从默认 var 目录中复制 SELinux 上下文:

    # chcon --reference=/var /remote_working_dir
    Copy to Clipboard Toggle word wrap
  3. 配置系统:

    # satellite-installer --foreman-proxy-plugin-ansible-working-dir /remote_working_dir
    Copy to Clipboard Toggle word wrap

3.8. 为远程执行分发 SSH 密钥

要使用 SSH 密钥来验证远程执行连接,您必须将公共 SSH 密钥从 Capsule 分发到您要管理的附加主机。确保 SSH 服务已启用并在主机上运行。配置任何基于网络的或基于主机的防火墙,以启用对端口 22 的访问。

使用以下方法之一将公共 SSH 密钥从 Capsule 分发到目标主机:

默认情况下,Satellite 将远程执行功能的 SSH 密钥分发到从 Satellite 置备的主机。

如果主机在 Amazon Web Services 上运行,请启用密码身份验证。如需更多信息,请参阅 https://aws.amazon.com/premiumsupport/knowledge-center/new-user-accounts-linux-instance

3.9. 手动分发用于远程执行的 SSH 密钥

要手动分发 SSH 密钥,请完成以下步骤:

流程

  1. 在 Capsule 上输入以下命令。对您要管理的每个目标主机重复:

    # ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub root@target.example.com
    Copy to Clipboard Toggle word wrap
  2. 要确认密钥已成功复制到目标主机,请在 Capsule 上输入以下命令:

    # ssh -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy root@target.example.com
    Copy to Clipboard Toggle word wrap

3.10. 使用 Satellite API 获取远程执行的 SSH 密钥

要使用 Satellite API 从 Capsule 下载公钥,请在每个目标主机上完成此流程。

流程

  1. 在目标主机上,创建 ~/.ssh 目录来存储 SSH 密钥:

    # mkdir ~/.ssh
    Copy to Clipboard Toggle word wrap
  2. 从 Capsule 下载 SSH 密钥:

    # curl https://capsule.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keys
    Copy to Clipboard Toggle word wrap
  3. ~/.ssh 目录配置权限:

    # chmod 700 ~/.ssh
    Copy to Clipboard Toggle word wrap
  4. authorized_keys 文件配置权限:

    # chmod 600 ~/.ssh/authorized_keys
    Copy to Clipboard Toggle word wrap

您可以将 remote_execution_ssh_keys 片断添加到自定义 kickstart 模板,以在置备过程中将 SSH 密钥部署到主机。Satellite 附带的 Kickstart 模板默认包括此代码片段。因此,Satellite 在调配期间将用于远程执行的 SSH 密钥复制到系统。

流程

  • 要在新置备的主机中包含公钥,请在您使用的 Kickstart 模板中添加以下代码片段:

    <%= snippet 'remote_execution_ssh_keys' %>
    Copy to Clipboard Toggle word wrap

3.12. 为 Kerberos Ticket Granting Tickets 配置 keytab

使用这个流程将 Satellite 配置为使用 keytab 获取 Kerberos 票据授予票据。如果您没有设置 keytab,则必须手动检索票据。

流程

  1. 查找 foreman-proxy 用户的 ID:

    # id -u foreman-proxy
    Copy to Clipboard Toggle word wrap
  2. 修改 umask 值,以便新文件具有权限 600

    # umask 077
    Copy to Clipboard Toggle word wrap
  3. 为 keytab 创建目录:

    # mkdir -p "/var/kerberos/krb5/user/USER_ID"
    Copy to Clipboard Toggle word wrap
  4. 创建 keytab 或将现有 keytab 复制到目录中:

    # cp your_client.keytab /var/kerberos/krb5/user/USER_ID/client.keytab
    Copy to Clipboard Toggle word wrap
  5. 将目录所有者改为 foreman-proxy 用户:

    # chown -R foreman-proxy:foreman-proxy "/var/kerberos/krb5/user/USER_ID"
    Copy to Clipboard Toggle word wrap
  6. 确保 keytab 文件是只读的:

    # chmod -wx "/var/kerberos/krb5/user/USER_ID/client.keytab"
    Copy to Clipboard Toggle word wrap
  7. 恢复 SELinux 上下文:

    # restorecon -RvF /var/kerberos/krb5
    Copy to Clipboard Toggle word wrap

3.13. 为远程执行配置 Kerberos 身份验证

您可以使用 Kerberos 身份验证建立 SSH 连接,以便在 Satellite 主机上远程执行。

前提条件

  • 在 Kerberos 服务器中注册 Satellite 服务器
  • 在 Kerberos 服务器中注册 Satellite 目标主机
  • 配置并初始化 Kerberos 用户帐户以进行远程执行
  • 确保 Satellite 上的 foreman-proxy 用户具有有效的 Kerberos 票据授予票据

流程

  1. 要为远程执行安装并启用 Kerberos 身份验证,请输入以下命令:

    # satellite-installer --scenario satellite \
     --foreman-proxy-plugin-remote-execution-ssh-ssh-kerberos-auth true
    Copy to Clipboard Toggle word wrap
  2. 要编辑用于远程执行的默认用户,在 Satellite Web UI 中进入 Administer > Settings 并点 Remote Execution 选项卡。在 SSH 用户 行中,编辑第二列并为 Kerberos 帐户添加用户名。
  3. 导航到 remote_execution_effective_user,再编辑第二列,为 Kerberos 帐户添加用户名。

要确认 Kerberos 身份验证已准备就绪,请在主机上运行远程作业。

3.14. 设置作业模板

Satellite 提供可用于执行任务的默认作业模板。要查看作业模板列表,请导航到 Hosts > Job templates。如果要在不进行任何更改的情况下使用模板 ,请继续执行远程作业

您可以使用默认模板作为开发自己的基础。默认任务模板被锁定以进行编辑。克隆模板并编辑克隆。

流程

  1. 要克隆模板,请在 Actions 列中选择 Clone
  2. 输入克隆的唯一名称,然后单击 Submit 以保存更改。

作业模板使用嵌入式 Ruby (ERB)语法。有关编写模板的更多信息,请参阅 管理主机指南中的模板编写参考

Ansible 注意事项

要创建 Ansible 作业模板,请使用以下流程而不是 ERB 语法,请使用 YAML 语法。使用 --- 开始模板。您可以将 Ansible playbook YAML 文件嵌入到作业模板正文中。您还可以添加 ERB 语法来自定义 YAML Ansible 模板。您还可以在 Satellite 中导入 Ansible playbook。如需更多信息,请参阅 管理主机 指南中的 同步存储库模板。

参数变量

在运行时,作业模板可以接受您为主机定义的参数变量。请注意,只有主机编辑页面中 的参数 才会用作作业模板的输入参数。如果您不希望 Ansible 作业模板在运行时接受参数变量,在 Satellite Web UI 中导航至 Administer > Settings 并点 Ansible 选项卡。在 顶级 Ansible 变量 行中,将 Value 参数更改为 No

3.15. 执行远程作业

您可以针对一个或多个主机执行基于作业模板的作业。

要使用 CLI 而不是 Satellite Web UI,请参阅 CLI 过程

流程

  1. 在 Satellite Web UI 中,导航到 Hosts > All Hosts,再选择您要在其上执行远程作业的目标主机。您可以使用 search 字段过滤主机列表。
  2. Select Action 列表中,选择 Schedule Remote Job
  3. Job 调用 页面中,定义主作业设置:
  4. 选择要使用的 作业类别和作业模板
  5. 可选:在 书签 列表中选择存储的搜索字符串,以指定目标主机。
  6. 可选:通过输入搜索查询来限制目标主机。Resolves to 行显示受查询影响的主机数量。更改查询后,使用刷新按钮重新计算数字。preview 图标列出目标主机。
  7. 剩余的设置取决于所选作业模板。有关 在模板中添加 自定义参数的信息,请参阅创建作业模板。
  8. 可选: 要为作业配置高级设置,请点击 Display advanced fields。一些高级设置取决于作业模板,以下设置通常是常规设置:

    • 有效的用户 定义了用于执行作业的用户,默认为 SSH 用户。
    • 并发级别 定义一次执行的最大作业数量,这可以防止在大量主机上执行作业时过载系统资源。
    • 终止的超时时间 (以秒为单位)定义作业应该被终止的时间间隔(如果还没有完成)。在定义的间隔期间无法启动的任务(例如,如果上一任务用时过长才能完成),则取消了。
    • 查询 类型定义何时评估搜索查询。这有助于保留已调度任务的查询最新。
    • 执行顺序 决定在主机上执行作业的顺序:字母或随机化。

      通过 并发级别 和超时 来终止 设置,您可以定制作业执行以适应您的基础架构硬件和需求。

  9. 要立即运行作业,请确保将 Schedule 设置为 Execute now。您还可以定义一次性作业,或设置重复的作业。对于重复任务,您可以定义开始和结束日期、运行次数和频率。您还可以使用 cron 语法来定义重复操作。有关 cron 的更多信息,请参阅 Red Hat Enterprise Linux 7 系统管理员指南中的自动化系统 任务 部分。
  10. Submit。这将显示 Job Overview 页面,作业完成后也会显示作业的状态。

CLI 过程

  • 在 Satellite 中输入以下命令:
# hammer settings set --name=remote_execution_global_proxy --value=false
Copy to Clipboard Toggle word wrap

要使用自定义参数执行远程作业,请完成以下步骤:

  1. 查找您要使用的作业模板的 ID:

    # hammer job-template list
    Copy to Clipboard Toggle word wrap
  2. 显示模板详情以查看模板所需的参数:

    # hammer job-template info --id template_ID
    Copy to Clipboard Toggle word wrap
  3. 使用自定义参数执行远程作业:

    # hammer job-invocation create \
    --job-template "template_name" \
    --inputs key1="value",key2="value",... \
    --search-query "query"
    Copy to Clipboard Toggle word wrap

    使用定义主机的过滤器表达式替换 query,如 "name ~ rex01 "。有关使用 hammer 执行远程命令的更多信息,请输入 hammer job-template --helphammer job-invocation --help

3.16. 为主机调度重复的 Ansible 作业

您可以调度重复的作业,以便在主机上运行 Ansible 角色。

流程

  1. 在 Satellite Web UI 中,导航到 Hosts > All Hosts,再选择您要在其上执行远程作业的目标主机。
  2. Ansible 选项卡中,选择 Jobs
  3. Scheduleduplicate job
  4. Create New Recurring Ansible Run 窗口中定义第一次运行的重复频率、开始时间和日期。
  5. Submit
  6. 可选:在主机概述中查看调度的 Ansible 作业,或者导航到 Ansible > Jobs

3.17. 为主机组调度重复的 Ansible 作业

您可以调度重复的作业,以在主机组上运行 Ansible 角色。

流程

  1. 在 Satellite Web UI 中,导航到 Configure > Host groups
  2. Actions 列中,为您要为其调度 Ansible 角色运行的主机组选择 Configure Ansible Job
  3. Scheduleduplicate job
  4. Create New Recurring Ansible Run 窗口中定义第一次运行的重复频率、开始时间和日期。
  5. Submit

3.18. 监控作业

您可以在作业运行时监控作业的进度。这有助于进行任何可能需要的故障排除。

Ansible 作业在 100 个主机的批处理上运行,因此您无法取消在特定主机上运行的作业。作业仅在 Ansible playbook 在批处理中的所有主机上运行后完成。

流程

  1. 在 Satellite Web UI 中,导航到 Monitor > Jobs。如果您使用 Execute now 设置触发作业,则会自动显示此页面。要监控调度的作业,请导航到 Monitor > Jobs 并选择您要检查的作业运行。
  2. 在 Job 页面中,点 Hosts 选项卡。这将显示在其上运行作业的主机列表。
  3. Host 列中,点您要检查的主机的名称。这将显示 Commands 页面的详情,您可以在其中实时监控作业执行。
  4. 随时点 Back to Job 以返回到 Job Details 页面。

CLI 过程

要在作业运行时监控作业的进度,请完成以下步骤:

  1. 查找作业的 ID:

    # hammer job-invocation list
    Copy to Clipboard Toggle word wrap
  2. 监控作业输出:

    # hammer job-invocation output \
    --id job_ID \
    --host host_name
    Copy to Clipboard Toggle word wrap
  3. 可选: 要取消作业,请输入以下命令:

    # hammer job-invocation cancel \
    --id job_ID
    Copy to Clipboard Toggle word wrap

您可以集成 Red Hat Satellite 和 Ansible Automation Controller,以使用 Satellite 服务器作为 Ansible Automation Controller 的动态清单源。Ansible Automation Controller 是 Red Hat Ansible Automation Platform 的一个组件。

您还可以使用置备回调功能,从主机或 Ansible Automation Controller 在由 Satellite 管理的主机上运行 playbook。从 Satellite 服务器置备新主机时,您可以使用置备回调功能从 Ansible Automation Controller 触发 playbook 运行。playbook 按照 Kickstart 部署配置主机。

要将 Satellite 服务器作为动态清单项目添加到 Ansible Automation Controller 中,您必须在 Ansible Automation Controller 上为 Satellite Server 用户创建一个凭证,将 Ansible Automation Controller 用户添加到凭据中,然后配置清单源。

前提条件

流程

  1. 在 Ansible Automation Controller Web UI 中,为您的 Satellite 创建凭证。有关创建凭证的更多信息,请参阅 自动化控制器用户指南中的 添加新 凭证和 Red Hat Satellite 凭证

    Expand
    表 4.1. Satellite 凭证
    凭证类型Red Hat Satellite 6

    Satellite URL

    https://satellite.example.com

    用户名

    Satellite 用户的用户名与 integration 角色。

    密码

    Satellite 用户的密码。

  2. 将 Ansible Automation Controller 用户添加到新凭据。有关将用户添加到凭证的更多信息,请参阅 自动化控制器用户指南中的 凭证入门
  3. 添加新清单。如需更多信息,请参阅 自动化控制器用户指南中的添加新清单http://docs.ansible.com/automation-controller/latest/html/userguide/inventories.html#add-a-new-inventory
  4. 在新清单中,添加 Satellite 服务器作为清单源,指定以下清单源选项:如需更多信息,请参阅 自动化控制器用户指南中的添加源https://docs.ansible.com/automation-controller/latest/html/userguide/inventories.html#add-source

    Expand
    表 4.2. 清单源选项
    Red Hat Satellite 6

    凭证

    为 Satellite 服务器创建的凭据。

    覆盖

    选择

    覆盖变量

    选择

    启动时更新

    选择

    缓存超时

    90

  5. 确保您同步添加的源。

4.2. 为主机配置置备回调

在 Satellite 中创建主机时,您可以使用 Ansible Automation Controller 运行 playbook 来配置新创建的主机。这在 Ansible Automation Controller 中称为 置备回调

置备回调功能会触发从 Ansible Automation Controller 运行 playbook,作为置备过程的一部分。playbook 在 Kickstart 部署后配置主机。

有关置备回调的更多信息,请参阅 自动化控制器用户指南中的 部署回调

在 Satellite 服务器中,Kickstart DefaultKickstart Default Finish 模板包括三个片断:

  1. ansible_provisioning_callback
  2. ansible_tower_callback_script
  3. ansible_tower_callback_service

您可以向主机或主机组添加参数,以提供这些代码片段可用于在新创建的主机上运行 Ansible playbook 的凭据。

前提条件

在配置置备回调前,您必须将 Satellite 添加为 Ansible Automation Controller 中的动态清单。如需更多信息,请参阅 集成 Satellite 和 Ansible Automation Controller

在 Ansible Automation Controller web UI 中,您必须完成以下任务:

  1. 为您的新主机创建机器凭证。确保您在计划分配给您在 Satellite 中创建的主机的凭据中输入相同的密码。如需更多信息,请参阅 自动化控制器用户指南中的 添加新凭据
  2. 创建一个项目。有关更多信息,请参阅 Ansible Automation Controller 用户指南中的 项目。
  3. 将作业模板添加到您的项目。如需更多信息,请参阅 自动化控制器用户指南中的 作业模板
  4. 在作业模板中,您必须启用置备回调,生成主机配置密钥,并记录作业模板的 template_ID。有关作业模板的更多信息,请参阅 自动化控制器用户指南中的 作业模板

流程

  1. 在 Satellite Web UI 中,导航到 Configure > Host Group
  2. 创建主机组或编辑现有主机组。
  3. 在 Host Group 窗口中,单击 Parameters 选项卡。
  4. 单击 Add Parameter
  5. 为每个新参数输入以下信息:

    Expand
    表 4.3. 主机参数
    名称Description

    ansible_tower_provisioning

    true

    启用置备回调。

    ansible_tower_fqdn

    controller.example.com

    Ansible Automation Controller 的完全限定域名(FQDN)。不要添加 https,因为这由 Satellite 附加。

    ansible_job_template_id

    template_ID

    您可以在模板的 URL 中找到的置备模板的 ID: /templates/job_template/5

    ansible_host_config_key

    config_KEY

    作业模板在 Ansible Automation Controller 中生成的主机配置密钥。

  6. Submit
  7. 使用主机组创建主机。
  8. 在新主机上,输入以下命令启动 ansible-callback 服务:

    # systemctl start ansible-callback
    Copy to Clipboard Toggle word wrap
  9. 在新主机上,输入以下命令输出 ansible-callback 服务的状态:

    # systemctl status ansible-callback
    Copy to Clipboard Toggle word wrap

    如果命令返回以下输出,则会正确配置置备回调:

    SAT_host systemd[1]: Started Provisioning callback to Ansible Automation Controller...
    Copy to Clipboard Toggle word wrap

手动置备回调

您可以使用主机的置备回调 URL 和主机配置密钥来调用 Ansible Automation Controller。例如:

# curl -k -s --data curl --insecure --data host_config_key=my_config_key \
https://controller.example.com/api/v2/job_templates/8/callback/
Copy to Clipboard Toggle word wrap

在输入置备回调 URL 时,确保您使用 https

这会触发模板中指定的 playbook 针对主机运行。

第 5 章 作业模板示例和扩展

使用本节作为帮助修改、自定义和扩展作业模板以满足您的要求的引用。

5.1. 自定义作业模板

在创建作业模板时,您可以在模板编辑器字段中包含现有模板。这样,您可以组合模板,或者从常规模板中创建更具体的模板。

以下模板组合了默认模板,以便在 Red Hat Enterprise Linux 系统上安装和启动 httpd 服务:

<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'httpd' %>
<%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'httpd' %>
Copy to Clipboard Toggle word wrap

以上模板直接为呈现的模板指定参数值。也可以使用 input () 方法在作业执行上定义呈现模板的输入。例如,您可以使用以下语法:

<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>
Copy to Clipboard Toggle word wrap

使用上述模板,您必须从呈现的模板导入参数定义。为此,请导航到 Jobs 选项卡,单击 Add Foreign Input Set,然后从 Target template 列表中选择呈现的模板。您可以导入所有参数,或指定以逗号分隔的列表。

5.2. 默认任务模板类别

Expand
作业模板类别Description

软件包

用于执行软件包相关操作的模板。默认包括安装、更新和删除操作。

puppet

用于在目标主机上运行 Puppet 的模板。

power

用于执行与电源相关的操作的模板。默认情况下,会包括重启和关闭操作。

命令

用于在远程主机上执行自定义命令的模板。

服务

用于执行与服务相关的操作的模板。start, stop, restart, 和 status 操作会被默认包括。

Katello

用于执行与内容相关的操作的模板。这些模板主要从 Satellite Web UI 的不同部分使用(例如,用于内容主机的批量操作 UI),但可用于执行勘误表安装等操作。

5.3. restorecon 模板示例

本例演示了如何创建名为 Run Command - restorecon 的模板,该模板为目标主机上所选目录中的所有文件恢复默认 SELinux 上下文。

  1. 在 Satellite Web UI 中,导航到 Hosts > Job templates。单击 New Job Template
  2. Name 字段中输入 Run Command - restorecon。选择 Default 使模板可供所有组织使用。在模板编辑器中添加以下文本:

    restorecon -RvF <%= input("directory") %>
    Copy to Clipboard Toggle word wrap

    & lt;%= input ("directory")%& gt; 字符串在作业调用过程中被用户定义的目录替代。

  3. Job 选项卡中,将 Job category 设置为 Commands
  4. 单击 Add Input 以允许自定义作业。在 Name 字段中输入 directory。输入名称必须与模板编辑器中指定的值匹配。
  5. 单击 Required,以便在没有指定用户参数的情况下无法执行命令。
  6. Input type 列表中选择 User input。输入要在作业调用期间显示的描述,如 restorecon 的 Target 目录
  7. Submit

有关如何 基于此模板执行任务的信息,请参阅在多个主机上执行 restorecon 模板。

5.4. 呈现 restorecon 模板

本例演示了如何创建从 Run 命令派生的模板 - restorecon 模板在 Example restorecon Template 中创建。此模板不需要用户在作业执行时输入,它将在目标主机上的 /home/ 目录下的所有文件中恢复 SELinux 上下文。

按照 设置作业模板 中所述创建新模板,并在模板编辑器中指定以下字符串:

<%= render_template("Run Command - restorecon", :directory => "/home") %>
Copy to Clipboard Toggle word wrap

5.5. 在多个主机上执行 restorecon 模板

本例演示了如何根据在多个主机上 示例 restorecon 模板中创建的模板运行作业。作业在 /home/ 目录下的所有文件中恢复 SELinux 上下文。

  1. 在 Satellite Web UI 中,导航到 Hosts > All hosts 并选择目标主机。从 Select Action 列表中选择 Schedule Remote Job
  2. 作业调用 页面中,选择 Commands job category 和 Run Command - restorecon job template。
  3. directory 字段中输入 /home
  4. Schedule 设置为 Execute now
  5. Submit。您进入 Job 调用 页面,您可以在其中监控作业执行的状态。

5.6. 在模板中包括电源操作

本例演示了如何设置作业模板来执行电源操作,如 reboot。此流程可防止 Satellite 在重启时解释断开连接的异常,因此任务的远程执行可以正常工作。

按照 设置作业模板 中所述创建新模板,并在模板编辑器中指定以下字符串:

<%= render_template("Power Action - SSH Default", :action => "restart") %>
Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部