注意:

使用 Leapp 升级 Oracle Linux

简介

Leapp 实用程序是用于更新和升级操作系统和应用程序的框架。该实用程序的组件包允许将不同的工作流创建到配置文件中以更新软件。

Leapp 操作包括两个阶段:

Leapp 可用于升级 Oracle Linux Oracle Cloud Infrastructure 实例以及 Oracle Linux 内部部署系统。

本教程分为两部分:

  1. 它将引导您完成将 Oracle Linux 7 实例升级到 Oracle Linux 8。
  2. 它将指导您将 Oracle Linux 8 实例升级到 Oracle Linux 9。

注:在生产环境中使用 Leapp 之前,建议熟悉测试环境中的 Leapp 升级过程。这使您能够更好地了解该流程及其报告,并测试可能遇到的任何安全或兼容性以及升级前和升级后问题。

注: Leapp 实用程序仅用于将操作系统 (Operating System,OS) 升级,例如,从当前发行版 Oracle Linux 8 升级到当前 Oracle Linux 9。使用的步骤特定于预配实验实例时部署的 Oracle Linux 版本。尽管本教程演示了从 Oracle Linux 7 升级到 Oracle Linux 8,然后继续使用同一系统从 Oracle Linux 8 升级到 Oracle Linux 9,但在生产环境中不建议通过多个 Oracle Linux 发行版升级系统。本教程中的过程不适用于任何其他 OS 或版本,也不受其支持。

目标

在本教程中,您将学习:

先决条件

部署 Oracle Linux

注:如果在您自己的租户中运行,请在部署实验环境之前阅读 linux-virt-labs GitHub 项目 README.md 并完成先决条件。

  1. 在 Luna Desktop 上打开一个终端。

  2. 克隆 linux-virt-labs GitHub 项目。

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. 转到工作目录。

    cd linux-virt-labs/ol
    
  4. 安装所需集合。

    ansible-galaxy collection install -r requirements.yml
    
  5. 部署实验室环境。

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e os_version="7.9"
    

    免费的实验环境需要额外的变量 local_python_interpreter,该变量为在 localhost 上运行的播放设置 ansible_python_interpreter。此变量是必需的,因为环境安装了适用于 Python 的 Oracle Cloud Infrastructure SDK 的 RPM 程序包,该程序包位于 python3.6 模块下。

    默认部署配置使用 AMD CPU 和 Oracle Linux 7。要使用 Intel CPU 或 Oracle Linux 8,请将 -e instance_shape="VM.Standard3.Flex"-e os_version="8" 添加到部署命令。

    重要提示:等待手册成功运行并到达暂停任务。在手册的这一阶段,Oracle Linux 安装已完成,实例已准备就绪。记下之前的剧集,其中输出其部署的节点的公共和专用 IP 地址,以及运行实验时所需的任何其他部署信息。

准备从 Oracle Linux 7 升级到 Oracle Linux 8

此实验室中使用的实例具有特定于环境的预配置设置,例如代理设置。

通常执行的某些升级前检查会被跳过,因为在此环境中不需要这些检查。

您可以在以下文档链接中查看在使用 Leapp 进行升级之前应进行的系统和内核先决条件和升级前检查的完整列表:Oracle Linux 8 - Performing System Upgrades with Leapp

  1. 打开终端并通过 SSH 连接到 ol-node-01 实例。

    ssh oracle@<ip_address_of_instance>
    
  2. 验证系统语言环境是否设置为 en_US.UTF-8

    cat /etc/locale.conf
    

    如果未正确设置语言环境,请使用命令 sudo localectl set-locale LANG=en_US.UTF-8 配置此设置。

更新到最新程序包

将所有系统软件包更新到最新版本。

sudo yum update -y

这需要几分钟时间,更新完成后,重新引导系统。

sudo reboot

等待几分钟完成重新引导,然后重新连接到实例的 SSH 连接。

如果连接失败,请稍等片刻,然后重试。

安装 Leapp 实用程序

安装 Leapp 实用程序及其支持资料档案库。

sudo yum install -y leapp-upgrade --enablerepo=ol7_leapp,ol7_latest

运行升级前检查

升级前处理将评估系统是否已做好成功升级的准备。它可识别可能影响或阻止升级过程的潜在问题。

有关您可能需要在自己的系统上运行的升级前准备步骤的信息,请参见 Oracle 文档中的 Preparing for the Upgrade

可随时使用升级前检查来评估系统的状态并确定可能发生冲突的位置。它不会更改系统,而是创建报告文件和调试日志,其中包含有关系统、其配置和潜在升级问题的信息。

  1. 运行 leapp preupgrade 命令以启动升级前进程。

    此实验系统是一个云实例,因此请使用命令 switch --oci

    sudo leapp preupgrade --oci
    

    如果系统是非云系统,则使用交换机 --oraclelinux

    --oci--oraclelinux 是用于预设与云或非云系统相关的存储库和配置信息的便利开关。

    • 输出示例:
    Debug output written to /var/log/leapp/leapp-preupgrade.log
    
    ============================================================
                          REPORT OVERVIEW                       
    ============================================================
    
    Upgrade has been inhibited due to the following problems:
        1. Possible problems with remote login using root account
        2. Missing required answers in the answer file
    
    HIGH and MEDIUM severity reports:
        1. Difference in Python versions and support in OL 8
        2. Detected customized configuration for dynamic linker.
        3. Default Boot Kernel
    
    Reports summary:
        Errors:                      0
        Inhibitors:                  2
        HIGH severity reports:       2
        MEDIUM severity reports:     1
        LOW severity reports:        5
        INFO severity reports:       2
    
    Before continuing consult the full report:
        A report has been generated at /var/log/leapp/leapp-report.json
        A report has been generated at /var/log/leapp/leapp-report.txt
    
    ============================================================
                       END OF REPORT OVERVIEW                   
    ============================================================
    
    Answerfile has been generated at /var/log/leapp/answerfile
      
    

    将创建 leapp-report.txtleapp-report.json 文件以及 answerfile 。调试信息保存在 leapp-preupgrade.log 文件中。

    在此环境中,在 Reports summary: 部分下,Inhibitors: 指示有两个问题会阻止升级。此外,还列出了 HIGHMEDIUMLOWINFO 等其他非禁止严重性问题,这些问题应该得到解决,但不会阻止升级。

    leapp-report 文本和 JSON 文件中也详细介绍了这些内容。

  2. 检查 leapp-report.txt 文件。

    sudo cat /var/log/leapp/leapp-report.txt
    

    标识标记为 Risk Factor: high (inhibitor) 的高风险条目。这些操作将阻止升级完成。

    该报告提供了问题的摘要,并提供了解决问题的解决方案。

    此报表是一个有用的自测工具,可以很好地了解系统中配置的内容以及可能存在哪些潜在冲突,而不管是否升级。

  3. 通过编辑 /etc/ssh/sshd_config 来取消注释 PermitRootLogin 项并添加新的 PermitRootLogin prohibit-password 项来清除第一个抑制剂。

    sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/;/PermitRootLogin yes/a PermitRootLogin prohibit-password' /etc/ssh/sshd_config
    

    检查 /etc/ssh/sshd_config 文件以确认新设置。

    sudo cat /etc/ssh/sshd_config
    

    验证两个条目是否存在并已启用。

    • 输出示例:
    .   
    # Authentication:
    
    #LoginGraceTime 2m
    PermitRootLogin yes
    PermitRootLogin prohibit-password
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
    .
    

    注:如果您愿意,还可以使用 sudo vi /etc/ssh/sshd_config 命令编辑 sshd_config 并添加两个设置。

  4. 检查 answerfile

    sudo cat /var/log/leapp/answerfile
    
    • 输出示例:
    [remove_pam_pkcs11_module_check]  
    # Title:              None  
    # Reason:             Confirmation  
    # =================== remove_pam_pkcs11_module_check.confirm ==================  
    # Label:              Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.  
    # Description:        PAM module pam_pkcs11 is no longer available in OL-8 since it was replaced by SSSD.  
    # Type:               bool  
    # Default:            None  
    # Available choices: True/False  
    # Unanswered question. Uncomment the following line with your answer  
    # confirm =  
    

    Available Choices: True/False 部分通知如何修改 answerfile 以解决发现的问题。

    使用 sudo leapp answer 命令为 [remove_pam_pkcs11_module_check] PAM 模块项提供答案 True

    sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
    

    注:如果您愿意,还可以使用 sudo vi /var/log/leapp/answerfile 命令编辑 answerfile 并插入 True 设置。

  5. 验证 answerfile 是否已修改。

    sudo cat /var/log/leapp/answerfile
    
    • 输出示例:
    [remove_pam_pkcs11_module_check]  
    confirm = True  
    

    请记住,必须回答 answerfile 中的所有项,并且必须解析 leapp-report.txt 文件中的任何高风险 Risk Factor: high (inhibitor) 项。

    您可以随时运行 preupgrade 命令来生成报告文件并确保处理所需的项。

  6. 重复 preupgrade 命令以验证没有阻止升级的抑制剂。在继续升级之前,Inhibitors: 行应显示 0

    • 输出示例:
    Debug output written to /var/log/leapp/leapp-preupgrade.log
    
    ============================================================
                          REPORT OVERVIEW                       
    ============================================================
    
    HIGH and MEDIUM severity reports:
        1. Detected customized configuration for dynamic linker.
        2. Difference in Python versions and support in OL 8
        3. Module pam_pkcs11 will be removed from PAM configuration
        4. Default Boot Kernel
    
    Reports summary:
        Errors:                      0
        Inhibitors:                  0
        HIGH severity reports:       2
        MEDIUM severity reports:     2
        LOW severity reports:        5
        INFO severity reports:       2
    
    Before continuing consult the full report:
        A report has been generated at /var/log/leapp/leapp-report.json
        A report has been generated at /var/log/leapp/leapp-report.txt
    
    ============================================================
                       END OF REPORT OVERVIEW                   
    ============================================================
    
    Answerfile has been generated at /var/log/leapp/answerfile
    

升级系统

要与升级后进行比较,请验证系统的当前 OS 和内核版本。

  1. 检查系统上运行的 Oracle Linux 版本。

    sudo cat /etc/oracle-release
    
  2. 检查使用的内核版本。

    uname -r
    
  3. 运行升级处理。

    sudo leapp upgrade --oci
    

    注:实验系统是一个云实例,因此将再次使用命令 switch --oci

    升级过程大约需要 10 分钟,完成后将返回到命令提示符。

    • 输出示例:
    Complete!
    ====> * add_upgrade_boot_entry
            Add new boot entry for Leapp provided initramfs.
    A reboot is required to continue. Please reboot your system.
    
    
    Debug output written to /var/log/leapp/leapp-upgrade.log
    
    ============================================================
                          REPORT OVERVIEW                       
    ============================================================
    
    HIGH and MEDIUM severity reports:
        1. Difference in Python versions and support in OL 8
        2. Detected customized configuration for dynamic linker.
        3. Module pam_pkcs11 will be removed from PAM configuration
        4. Default Boot Kernel
    
    Reports summary:
        Errors:                      0
        Inhibitors:                  0
        HIGH severity reports:       2
        MEDIUM severity reports:     2
        LOW severity reports:        5
        INFO severity reports:       2
    
    Before continuing consult the full report:
        A report has been generated at /var/log/leapp/leapp-report.json
        A report has been generated at /var/log/leapp/leapp-report.txt
    
    ============================================================
                       END OF REPORT OVERVIEW                   
    ============================================================
    
    Answerfile has been generated at /var/log/leapp/answerfile
      
    

    升级过程还会更新 answerfileleapp-report.txt ,并创建 leapp-upgrade.log 文件。

    注:如果尚未处理 leapp-report.txt 文件中的 answerfile 项和 Risk Factor: high (inhibitor) 项,该进程将终止回命令行并通知遇到的问题。

  4. 升级完成后,重新引导系统。

    sudo reboot
    

    重新引导将断开 SSH 连接。在引导过程中,Leapp 进程会自动升级软件包。

    升级操作还包括多个自动重新引导。在完成所有重新引导之前,您将无法重新连接 SSH 会话。

    等待大约 15 分钟,然后将 SSH 会话重新连接到系统。如果连接失败,请等待几分钟,然后重试。

验证升级

将当前用于系统的 OS 版本和内核与升级前版本进行比较。

  1. 检查正在运行的 Oracle Linux 版本。

    sudo cat /etc/oracle-release
    
  2. 检查使用的内核版本。

    uname -r
    

    升级完成后,您现在会看到系统正在运行 Oracle Linux 8.x ,内核版本显示 el8

在升级和该过程进行的任何更改之后,确保升级后的系统保持受支持状态非常重要。

有关帮助升级后的系统恢复运行的过程和检查的信息和指南,请参见文档中的升级后信息

对于在您自己的系统上执行的 Leapp 升级,建议阅读本文。

从 Oracle Linux 8 升级到 Oracle Linux 9

您将使用 Leapp 将实验室系统从 Oracle Linux 8 升级到 Oracle Linux 9。

注:通过此练习,您可以继续使用升级后的系统(从前面的步骤),为从 Oracle Linux 8 升级到 9 做准备。但是,不建议在生产环境中以这种方式将 Oracle Linux 7 系统升级到 Oracle Linux 9。

注: Leapp 实用程序仅用于将操作系统升级,例如,从当前的 Oracle Linux 8 发行版升级到当前的 Oracle Linux 9 版本。本教程中的过程不适用于任何其他 OS 或版本,也不受其支持。

准备从 Oracle Linux 8 升级到 Oracle Linux 9

在使用 Leapp 将系统升级到 Oracle Linux 9 之前,需要做一些准备。

您可以在以下文档链接中查看在使用 Leapp 进行升级之前应执行的系统和内核先决条件和升级前检查的完整列表:Oracle Linux 9 - Performing System Upgrades with Leapp

例如,确保 /boot 分区中有足够的磁盘空间尤为重要,请参见文档中的 Requirements for Upgrading 部分。

  1. 打开终端并通过 SSH 连接到 ol-node-01 实例。

    ssh oracle@<ip_address_of_instance>
    
  2. 验证系统语言环境是否设置为 en_US.UTF-8

    cat /etc/locale.conf
    

    如果未正确设置语言环境,请使用命令 sudo localectl set-locale LANG=en_US.UTF-8 配置此设置。

  3. 将所有系统软件包更新到最新版本。

    sudo dnf update -y
    

    更新完成后,重新引导系统。

    sudo reboot
    

    等待几分钟完成重新引导,然后重新连接到实例的 SSH 连接。

    如果连接失败,请稍等片刻,然后重试。

  4. 编辑 /etc/dnf/dnf.conf 以注释掉 exclude= 行,该行引用先前升级中的任何先前 leapp 软件包。

    注:仅执行此步骤是为了在系统从 Oracle Linux 7 到 8 的上一个 ugrade 之后准备系统。

    sudo sed -i 's/exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp/#exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp/' /etc/dnf/dnf.conf
    
  5. 安装 NetworkManager 软件包,然后取消屏蔽并启动服务。按此顺序运行这些命令。

    注:仅执行此步骤是为了在系统从 Oracle Linux 7 到 8 的上一个 ugrade 之后准备系统。

    sudo dnf install -y NetworkManager 
    sudo systemctl unmask NetworkManager 
    sudo systemctl start NetworkManager 
    sudo systemctl enable NetworkManager
    
    
  6. 删除不再适用的任何内核、内核模块和剩余软件包。搜索名称中包含 el7 的任何项。

    注:仅执行此步骤是为了在系统从 Oracle Linux 7 到 8 的上一个 ugrade 之后准备系统。

    sudo rpm -qa | grep el7
    
    • 输出示例:
    python2-leapp-0.17.0-1.0.2.el7_9.noarch
    kernel-uek-5.4.17-2136.336.5.1.el7uek.x86_64
    kernel-uek-5.4.17-2136.338.4.1.el7uek.x86_64
    leapp-0.17.0-1.0.2.el7_9.noarch
    kernel-3.10.0-1160.119.1.0.5.el7.x86_64
    leapp-upgrade-el7toel8-0.20.0-2.0.5.el7_9.noarch
    

    注:您在练习中看到的文件名可能与此处示例输出中显示的文件名不同。

    sudo dnf remove -y leapp-upgrade
    sudo dnf remove -y python2-leapp
    sudo dnf remove -y *el7*
    
    

    注:如果看到阻止删除 Leapp 软件包的错误,请验证您之前对 dnf.conf 文件进行了编辑。

  7. 清除 DNF 高速缓存中的所有项。

    sudo dnf clean all
    

安装适用于 Oracle Linux 8 的 Leapp 实用程序

所使用的 Leapp 实用程序特定于要升级的 OS,因此必须安装 Oracle Linux 8 版本的 Leapp 实用程序。这就是为什么您之前可能已从以前的升级中删除了所有剩余的旧 Leapp 软件包。

安装 Oracle Linux 8 Leapp 实用程序。

   sudo dnf install -y leapp-upgrade

运行升级前检查

有关您可能需要在自己的系统上运行的升级前准备步骤的信息,请参见 Oracle 文档中的 Preparing for the Upgrade

运行 leapp preupgrade 命令以测试升级过程并报告任何错误或抑制剂。

对于此云实例,我们再次使用命令 switch --oci

sudo leapp preupgrade --oci

============================================================
                      REPORT OVERVIEW                       
============================================================

Upgrade has been inhibited due to the following problems:
    1. Firewalld Configuration AllowZoneDrifting Is Unsupported
    2. Network configuration with disabled NetworkManager support detected
    3. OSWatcher is removed from OL9.
    4. Missing required answers in the answer file

HIGH and MEDIUM severity reports:
    1. Remote root logins globally allowed using password
    2. Packages not signed by Oracle found on the system
    3. Default Boot Kernel

Reports summary:
    Errors:                      0
    Inhibitors:                  4
    HIGH severity reports:       2
    MEDIUM severity reports:     1
    LOW severity reports:        1
    INFO severity reports:       3

Before continuing consult the full report:
    A report has been generated at /var/log/leapp/leapp-report.json
    A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                   END OF REPORT OVERVIEW                   
============================================================

检查 Reports summary: 部分中任何抑制剂的输出。

此外,检查 /var/log/leapp/leapp-report.txt 以查找任何抑制剂条目,检查 /var/log/leapp/answerfile 以查找任何未响应条目。

清除抑制剂

在此环境中,在之前从 Oracle Linux 7 升级到 Oracle Linux 8 后,存在某些抑制剂。

升级后系统检查通常会在系统恢复运行之前解决问题。

使用以下命令清除这些抑制剂。

  1. 为实验室系统上的网络接口配置启用 NetworkManager 支持。

    sudo sed -i 's/NM_CONTROLLED=no/NM_CONTROLLED=yes/' /etc/sysconfig/network-scripts/ifcfg-ens3
    
  2. 在防火墙配置文件 /etc/firewalld/firewalld.conf 中禁用 AllowZoneDrifting 以防止阻止 Leapp 升级。

    sudo sed -i 's/^AllowZoneDrifting=.*/AllowZoneDrifting=no/' /etc/firewalld/firewalld.conf
    
  3. 回答 /var/log/leapp/answerfile 中的 OSWatcher 项。这还将解决 leapp-report.txt 文件中的第二个 OSWatcher 项。

    sudo leapp answer --section update_oswatcher_to_pcp.confirm=True
    

再次运行 preupgrade 命令以验证报表输出中没有更多抑制剂。

在此环境中,Reports summary 中仍会列出一些项目。

仅当 Inhibitors: 行显示 0 时才继续升级系统。

升级系统

在升级之前验证当前的 Oracle Linux 8 OS 版本和内核。

在升级之前,检查正在运行的 Oracle Linux 版本和内核。

   sudo cat /etc/oracle-release
   uname -r

运行升级处理。

   sudo leapp upgrade --oci

升级完成后,重新引导系统。

   sudo reboot

系统将重新引导多次。在所有重新引导完成之前,您将无法重新连接 SSH 会话。

等待大约 15 分钟,然后将 SSH 会话重新连接到系统。如果连接失败,请等待几分钟,然后重试。

验证升级

验证已升级的 Oracle Linux 9 版本和内核现在已用于您的系统。

   sudo cat /etc/oracle-release
   uname -r

升级已完成,系统正在运行 Oracle Linux 9.x ,内核版本显示 el9

有关帮助升级后的系统恢复运行的过程和检查的信息和指南,请参见文档中的升级后信息

对于在您自己的系统上执行的 Leapp 升级,建议阅读本文。

注:本练习按照步骤将 Oracle Linux 7 系统升级到 Oracle Linux 8,然后使用同一系统从 Oracle Linux 8 升级到 9。

此练习仅用于练习 Leapp 实用程序命令和演示,不建议以这种方式将 Oracle Linux 7 系统升级到 Oracle Linux 9。

后续步骤

通过完成本教程,您已经展示了使用 Leapp 实用程序升级 Oracle Linux 系统的技能和能力。

在自己的系统上运行 Leapp 时,请记得查看升级后文档以确保系统保持受支持状态。

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心