5.2. 在 undercloud 上执行 Leapp 升级

安装并运行 Leapp 工具将操作系统升级到 Red Hat Enterprise Linux(RHEL)8。

先决条件

流程

  1. stack 用户的身份登录 undercloud。
  2. 安装 Leapp 工具程序和 jq:

    $ sudo yum install leapp
    $ sudo yum install jq
  3. 下载额外所需的数据文件(RPM 软件包的变化和 RPM 存储库映射),附加到 Leapp 程序所需的知识基本文档数据,以便从 RHEL 7 原位升级到 RHEL 8,并将这些文件放在 /etc/leapp/files/ 目录中。
  4. 更新您的红帽订阅:

    • 如果您的 undercloud 使用红帽客户门户网站进行注册,请刷新您当前的订阅以获取 Red Hat Enterprise Linux 8.4 内容的访问权限:

      $ sudo subscription-manager refresh
    • 如果您的 undercloud 使用 Red Hat Satellite Server 进行注册,请将 undercloud 重新注册到与 Red Hat OpenStack Platform(RHOSP)16.2 激活码关联的内容视图。

      $ sudo subscription-manager register --force --org ORG --activationkey ACTIVATION_KEY
      注意

      为 Red Hat OpenStack Platform 16.2 创建的内容视图必须包含 Red Hat Enterprise Linux 8.4 的内容。

  5. Red Hat OpenStack Platform 16.2 使用了一个新版本的 Open vSwitch。通过 to_removeto_install 事务文件替换 Open vSwitch 版本:

    $ echo 'openvswitch2.11' | sudo tee -a /etc/leapp/transaction/to_remove
    $ echo 'openvswitch2.15' | sudo tee -a /etc/leapp/transaction/to_install
  6. 使用 to_keep 事务文件进行升级保留 Red Hat Ceph Storage 3 的 ceph-ansible 版本:

    $ echo 'ceph-ansible' | sudo tee -a /etc/leapp/transaction/to_keep
  7. 调整 RHEL 8 不再支持的内核模块:

    $ if [ -f /usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/kernel/checkkerneldrivers/files/removed_drivers.txt ]; then
        for module in pata_acpi floppy; do
            sudo sed -i "/^${module}$/d" /usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/kernel/checkkerneldrivers/files/removed_drivers.txt
        done
    else
        for module in pata_acpi floppy; do
            jq ". | del(.data[] | select(.driver_name == \"${module}\"))" /etc/leapp/files/device_driver_deprecation_data.json | sudo tee /etc/leapp/files/device_driver_deprecation_data.json_modified
            mv /etc/leapp/files/device_driver_deprecation_data.json_modified /etc/leapp/files/device_driver_deprecation_data.json
        done
    fi
  8. 删除 pam_pkcs11 模块:

    $ sudo leapp answer --add --section remove_pam_pkcs11_module_check.confirm=True
  9. 可选: 如果您的环境使用 TLS-Everywhere 架构进行了部署,并使用已弃用的 authconfig 程序在您的系统中配置身份验证,请使用 authselect 程序配置 RHEL 8 系统:

    $ sudo leapp answer --add --section authselect_check.confirm=True

    有关 Leapp 升级过程中验证配置的更多信息,请参阅从 RHEL 7 升级到 RHEL 8的问题

  10. 设置 LEAPP_DEVEL_TARGET_RELEASELEAPP_UNSUPPORTED 环境变量,以指定您要升级到的 RHEL 8 次要版本。对于 RHOSP 16.2,必须将 RHEL 8 次版本设置为 8.4

    $ export LEAPP_UNSUPPORTED=1
    $ export LEAPP_DEVEL_TARGET_RELEASE=8.4

    每次使用带有 LEAPP_DEVEL 前缀的环境变量时,您必须使用 LEAPP_UNSUPPORTED 环境变量。

  11. 从 Leapp 进程中删除持久性网络名称:

    注意

    如果您在执行 Leapp 升级过程前没有重命名网络接口名称,则在升级到 RHEL 8.2 后接口名称可能会改变。有关重命名网络接口名称的详情请参考 第 4.3 节 “为 undercloud 节点使用可预测的 NIC 名称”

    $ sudo rm -f /usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/persistentnetnamesdisable/actor.py
  12. 启动 Leapp 升级过程:

    $ sudo -E leapp upgrade --debug --enablerepo rhel-8-for-x86_64-baseos-eus-rpms --enablerepo rhel-8-for-x86_64-appstream-eus-rpms --enablerepo fast-datapath-for-rhel-8-x86_64-rpms --enablerepo ansible-2.9-for-rhel-8-x86_64-rpms

    使用 --enablerepo 选项设置在 Leapp 升级过程中要启用的软件仓库。您必须包括这些软件仓库才能促进 Red Hat OpenStack Platform 16.2 转换,特别是与新版本的 Open vSwitch 一起。

  13. 等待 leapp upgrade 命令成功完成。
  14. 在根目录中创建一个空 .autorelabel 文件:

    $ sudo touch /.autorelabel

    重启后,SELinux 会检测到此文件并自动重新标记文件系统。

  15. 重新引导 undercloud:

    $ sudo reboot
  16. 从 DNF 配置中定义的事务排除项中删除 Leapp 软件包:

    $ sudo dnf config-manager --save --setopt exclude=''