Convert2RHEL 是一款红帽实用程序,可以转换类似于或衍生自红帽企业 Linux (RHEL) 的操作系统,如 CentOS Linux 和 Oracle Linux。请阅读本文档,了解有关受支持操作系统的完整列表。有关更多信息,请点击此处参阅 Terry Bowling 的博客文章和此处的 Oracle Linux

红帽卫星 6.10 首先提供了批量 Convert2RHEL 操作功能。我在另一篇博客中曾写过相关文章。红帽卫星 6.11 通过以下两种方式构建这些功能:

  1. 通过 Ansible 角色自动执行 Convert2RHEL 的卫星服务器配置/准备。

  2. 通过 Ansible Playbook 自动执行主机转换。

以下流程图简要概述了在卫星 6.11 中批量执行 Convert2RHEL 操作所需的任务。

 

Flowchart of tasks required to perform a bulk Convert2RHEL operation

就绪后,将 Centos/Oracle Linux 主机注册到卫星,再调度一项作业将您的主机转换为 RHEL。

请注意,可以通过单独的 Ansible 服务器将 Ansible 角色手动应用到卫星服务器。

此处,我们将详细介绍实施这一全新自动化所需的所有步骤。

准备卫星服务器

首先,按照以下说明导入包含的 Ansible 角色。

首先,前往“配置” >“角色”。

 

first go to Configure > Roles

单击“导入...”。

 

Click on Import

单击“全选”,然后单击“提交”。

 

Click on Select All and then Submit

接下来,我们必须先为 Ansible 角色创建变量,然后才能在卫星服务器上运行。这些变量将决定了您希望 Ansible 角色如何在卫星服务器上配置批量 Convert2RHEL 操作。这包括指定订阅清单、组织、位置、管理员凭据等。

配置 Ansible 角色变量最为简单快捷的方法是在卫星服务器上使用 Hammer 命令行实用程序。您还可以通过卫星 Web UI 配置 Ansible 角色变量。

在这个特定的卫星服务器上,我定义了下列变量。

变量

satellite_rhel_wait_for_syncs

true

satellite_manifest_path

/usr/share/satellite/manifest_satellite_20220815T193102Z.zip

satellite_organization

Acme Org

satellite_password

Ha ha no you don't

satellite_username

myee

satellite_server_url

https://ip-172-31-29-4.us-west-1.compute.internal

satellite_validate_certs

true

satellite_content_rhel_enable_rhel7

true

satellite_content_rhel_enable_rhel8

true

以下是使用 Hammer 实用程序创建 Ansible 角色变量的方法。

satellite_rhel_wait_for_syncs

Ansible 角色配置并同步执行批量 Convert2RHEL 操作所需的存储库。satellite_rhel_wait_for_syncs 变量告知操作等待存储库同步。

以根身份登录,在卫星服务器的命令行界面上输入以下内容:

Hamm ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel - -variable satellite_rhel_wait_for_syncs --variable-type boolean --default-value false --override true

satellite_manifest_path

运行 Ansible 角色时,该命令会上传订阅清单,确保您的所有新主机都获得了适当的许可。很抱歉,如果您已经上传了有效的清单,您将不得不再次上传。

Hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_manifest_path --variable-type string --default-value "/usr/share/ satellite/manifest_satellite_20220815T193102Z.zip" --override true

satellite_organization/usr

我的卫星组织是“Acme Org”。

Hamm ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_organization --variable-type string --default-value "Acme Org" -- override true

satellite_password

Ansible 角色将需要卫星管理员凭据。在此处输入密码。

Hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_password --variable-type string --default-value "YOUR_ADMIN_PASSWORD" --override true

注意: 若要避免使用密码,您可以改为设置个人访问令牌。

 

To avoid using passwords you can set up Personal Access Tokens instead

satellite_username

在此处输入 admin 用户名。

brick ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_username --variable-type string --default-value "myee" --override true

satellite_server_url

卫星服务器 URL 是主机需要通过 curl 实用程序访问的 URL。

Hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_server_url --variable-type string --default-value "https://ip -172-31-29-4.us-west-1.compute.internal" --override true

satellite_validate_certs

此值应设为 true。

brick ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_validate_certs --variable-type boolean --default-value true --override true

satellite_content_rhel_enable_rhel7

此变量将指定您希望 Ansible 角色同步 RHEL7 内容,以启用 Centos 7(或 Oracle)主机到 RHEL7 的转换。如果您不想同步 RHEL7 内容,请使用此变量来指定 false。

brick ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_content_rhel_enable_rhel7 --variable-type boolean --default-value true --override true

satellite_content_rhel_enable_rhel8

此变量将指定您希望 Ansible 角色同步 RHEL8 内容,以启用 Centos 8(或 Oracle)主机到 RHEL8 的转换。如果您不想同步 RHEL8 内容,请使用此变量指定 false

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_content_rhel_enable_rhel8 --variable-type boolean --default-value true --override true

您可以检查 Web UI 中的变量设置是否正确。前往 Ansible 变量子菜单。

 

Go to the Ansible Variables sub-menu

浏览变量,直到找到刚刚创建的变量。

 

Ansible variables

现在我们必须要配置卫星,以便能够对自身运行远程执行作业。

注意 如果您已能够对卫星服务器运行远程执行作业,则无需执行此步骤。

以根身份登录卫星服务器,再运行以下命令:

satellite-installer \ --foreman-proxy-plugin-remote-execution-ssh-install-key true

输出将与下方所示类似:

 

Satellite installer sample output

接下来,我们要把 Ansible 角色应用到卫星服务器。

单击“主机” > “全部主机”。

 

Click on Hosts > All Hosts

编辑您的卫星服务器。

 

Edit your Satellite server

单击“Ansible 角色”选项卡。

 

Click on the Ansible Roles tab

Convert2RHEL 角色位于子菜单的第二页。单击 + 号,将 redhat.satellite.convert2rhel 角色分配给您的卫星服务器。

 

The Convert2RHEL roles is on the second page

然后单击“提交”。

 

Click Submit

然后,您将被重定向到主机信息页面。单击“安排远程工作”按钮,再选择“运行 Ansible 角色”。

 

Click on the Schedule Remote Job button and select Run Ansible roles

您将被重定向到显示作业状态的页面。单击卫星主机,查看作业的实时状态。

 

Click on the Satellite host to see the real-time status of the job

此处您可以查看正在执行的作业中的每个任务。

 

Here you can see each task in the job being executed

注意 Ansible 角色会同步所需的内容、创建主机组和激活密钥等等。卫星 6.11 存在一个漏洞,即为注册 CentOS 7 主机而创建的激活密钥“Convert2RHEL7”可启用 Convert2RHEL8 存储库。若要解决此漏洞,您必须在“convert2rhel_centos7”激活密钥中覆盖此存储库。

 

To work around this bug, you must override this repo in the "convert2rhel_centos7" activation key

运行转换

重要信息:在运行转换之前,候选主机必须是最新的,并且使用最新的内核重新启动。

首先,我们需要注册要转换的主机。在本例中,我要转换 CentOS7 主机。单击“主机” >“注册主机”。

 

Click on Hosts > Register Host

在我的测试 CentOS 主机上,我没有从卫星服务器复制证书颁发机构文件。您可以在此处了解更多关于如何执行此操作的信息。

在“注册主机”菜单中,选择 1)"CentOS 7 转换" 主机组,然后选择 2)"不安全",再选择 3)"高级"。"不安全"选项使得脚本能够在不验证自签名证书的情况下首先运行。后续通信是完全安全的。如果您想避免使用“不安全”的方法,请在此处阅读有关导入证书的更多信息

 

Register Host

接下来,单击“高级”。

在“注册主机”菜单的“高级”环境中执行下列任务。

  1. 检查“激活密钥”是否继承自主机组“convert2rhel_centos7”。您无需单击此处的任何内容。

  2. 单击“生成”。这将生成 curl 脚本,您将复制并粘贴到 CentOS 主机的 CLI。

  3. 单击“复制”按钮以复制 curl 脚本。

 

Register Host Advanced Tab

现在登录其中一个候选主机。导出主机的正确区域设置。

export LANG=en_US.UTF-8

粘贴 curl 脚本并运行。以下是一些输出示例。

 

Some example output

对所有候选主机重复此任务。

在 Hosts 菜单中,您会看到您的所有 CentOS 主机都已注册到卫星中。

 

In the Hosts menu, you see all your CentOS hosts registered to Satellite.

若要启动 Convert2RHEL 操作,请执行下列任务。

  1. 选择候选主机。

  2. 单击“选择”,再选择“安排远程工作”。

 

Click on "Select Action" and select "Schedule Remote Job".

在工作调用菜单中,执行下列任务。

  1. 在“工作目录”下拉列表中,选择“Convert 2 RHEL”。

  2. 在“激活密钥”下拉列表中,选择“convert2rhel_rhel7”。

  3. 单击“提交”以启动批量 Convert2RHEL 操作。

 

Click "Submit" to start the bulk Convert2RHEL operation.

您将被重定向到“作业概述”菜单,您可以在其中选择通过单击主机来查看每个主机上作业的实时状态。

 

You’ll be redirected to the "Job Overview" menu

以下是作业的实时视图。

 

Here’s the real-time view of the job.

最终结果是,所有主机将一次性转换为 RHEL!

 

The final result, all hosts converted to RHEL at once!

更多相关信息,请参阅此处的官方 Convert2RHEL 文档

 


关于作者

As a Senior Principal Technical Marketing Manager in the Red Hat Enterprise Linux business unit, Matthew Yee is here to help everyone understand what our products do. He joined Red Hat in 2021 and is based in Vancouver, Canada.

Read full bio