Convert2RHEL 是一款红帽实用程序,可以转换类似于或衍生自红帽企业 Linux (RHEL) 的操作系统,如 CentOS Linux 和 Oracle Linux。请阅读本文档,了解有关受支持操作系统的完整列表。有关更多信息,请点击此处参阅 Terry Bowling 的博客文章和此处的 Oracle Linux。
红帽卫星 6.10 首先提供了批量 Convert2RHEL 操作功能。我在另一篇博客中曾写过相关文章。红帽卫星 6.11 通过以下两种方式构建这些功能:
-
通过 Ansible 角色自动执行 Convert2RHEL 的卫星服务器配置/准备。
-
通过 Ansible Playbook 自动执行主机转换。
以下流程图简要概述了在卫星 6.11 中批量执行 Convert2RHEL 操作所需的任务。
就绪后,将 Centos/Oracle Linux 主机注册到卫星,再调度一项作业将您的主机转换为 RHEL。
请注意,可以通过单独的 Ansible 服务器将 Ansible 角色手动应用到卫星服务器。
此处,我们将详细介绍实施这一全新自动化所需的所有步骤。
准备卫星服务器
首先,按照以下说明导入包含的 Ansible 角色。
首先,前往“配置” >“角色”。
单击“导入...”。
单击“全选”,然后单击“提交”。
接下来,我们必须先为 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 |
|
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
注意: 若要避免使用密码,您可以改为设置个人访问令牌。
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 变量子菜单。
浏览变量,直到找到刚刚创建的变量。
现在我们必须要配置卫星,以便能够对自身运行远程执行作业。
注意: 如果您已能够对卫星服务器运行远程执行作业,则无需执行此步骤。
以根身份登录卫星服务器,再运行以下命令:
satellite-installer \ --foreman-proxy-plugin-remote-execution-ssh-install-key true
输出将与下方所示类似:
接下来,我们要把 Ansible 角色应用到卫星服务器。
单击“主机” > “全部主机”。
编辑您的卫星服务器。
单击“Ansible 角色”选项卡。
Convert2RHEL 角色位于子菜单的第二页。单击 + 号,将 redhat.satellite.convert2rhel 角色分配给您的卫星服务器。
然后单击“提交”。
然后,您将被重定向到主机信息页面。单击“安排远程工作”按钮,再选择“运行 Ansible 角色”。
您将被重定向到显示作业状态的页面。单击卫星主机,查看作业的实时状态。
此处您可以查看正在执行的作业中的每个任务。
注意: Ansible 角色会同步所需的内容、创建主机组和激活密钥等等。卫星 6.11 存在一个漏洞,即为注册 CentOS 7 主机而创建的激活密钥“Convert2RHEL7”可启用 Convert2RHEL8 存储库。若要解决此漏洞,您必须在“convert2rhel_centos7”激活密钥中覆盖此存储库。
运行转换
重要信息:在运行转换之前,候选主机必须是最新的,并且使用最新的内核重新启动。
首先,我们需要注册要转换的主机。在本例中,我要转换 CentOS7 主机。单击“主机” >“注册主机”。
在我的测试 CentOS 主机上,我没有从卫星服务器复制证书颁发机构文件。您可以在此处了解更多关于如何执行此操作的信息。
在“注册主机”菜单中,选择 1)"CentOS 7 转换" 主机组,然后选择 2)"不安全",再选择 3)"高级"。"不安全"选项使得脚本能够在不验证自签名证书的情况下首先运行。后续通信是完全安全的。如果您想避免使用“不安全”的方法,请在此处阅读有关导入证书的更多信息。
接下来,单击“高级”。
在“注册主机”菜单的“高级”环境中执行下列任务。
-
检查“激活密钥”是否继承自主机组“convert2rhel_centos7”。您无需单击此处的任何内容。
-
单击“生成”。这将生成 curl 脚本,您将复制并粘贴到 CentOS 主机的 CLI。
-
单击“复制”按钮以复制 curl 脚本。
现在登录其中一个候选主机。导出主机的正确区域设置。
export LANG=en_US.UTF-8
粘贴 curl 脚本并运行。以下是一些输出示例。
对所有候选主机重复此任务。
在 Hosts 菜单中,您会看到您的所有 CentOS 主机都已注册到卫星中。
若要启动 Convert2RHEL 操作,请执行下列任务。
-
选择候选主机。
-
单击“选择”,再选择“安排远程工作”。
在工作调用菜单中,执行下列任务。
-
在“工作目录”下拉列表中,选择“Convert 2 RHEL”。
-
在“激活密钥”下拉列表中,选择“convert2rhel_rhel7”。
-
单击“提交”以启动批量 Convert2RHEL 操作。
您将被重定向到“作业概述”菜单,您可以在其中选择通过单击主机来查看每个主机上作业的实时状态。
以下是作业的实时视图。
最终结果是,所有主机将一次性转换为 RHEL!
更多相关信息,请参阅此处的官方 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.
产品
工具
试用购买与出售
沟通
关于红帽
我们是世界领先的企业开源解决方案供应商,提供包括 Linux、云、容器和 Kubernetes。我们致力于提供经过安全强化的解决方案,从核心数据中心到网络边缘,让企业能够更轻松地跨平台和环境运营。