ノート:

Leappを使用したOracle Linuxのアップグレード

イントロダクション

Leappユーティリティは、オペレーティング・システムとアプリケーションを更新およびアップグレードするためのフレームワークです。ユーティリティのコンポーネント・パッケージを使用すると、ソフトウェアを更新するための様々なワークフローをプロファイルに作成できます。

Leapp操作は、次の2つのフェーズで構成されています。

Leappは、Oracle Linux Oracle Cloud InfrastructureインスタンスおよびOracle Linuxオンプレミス・システムのアップグレードに使用できます。

このチュートリアルは、次の2つの部分で構成されています。

  1. ここでは、Oracle Linux 7インスタンスをOracle Linux 8にアップグレードする方法について説明します。
  2. ここでは、Oracle Linux 8インスタンスをOracle Linux 9にアップグレードする方法について説明します。

ノート:本番環境でLeappを使用する前に、テスト環境でLeappのアップグレード・プロセスに精通しておくことをお薦めします。これにより、プロセスとそのレポートをよりよく理解し、発生する可能性のあるセキュリティまたは互換性およびアップグレード前およびアップグレード後の問題をテストできます。

ノート: Leappユーティリティは、オペレーティング・システム(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デスクトップでターミナルを開きます。

  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"
    

    無料の演習環境には、ローカル・ホストで実行される再生のansible_python_interpreterを設定する追加の変数local_python_interpreterが必要です。この変数は、python3.6モジュールの下にあるOracle Cloud Infrastructure SDK for PythonのRPMパッケージが環境によってインストールされるため必要です。

    デフォルトのデプロイメント・シェイプでは、AMD CPUおよびOracle Linux 7が使用されます。Intel CPUまたはOracle Linux 8を使用するには、デプロイメント・コマンドに-e instance_shape="VM.Standard3.Flex"または-e os_version="8"を追加します。

    重要:プレイブックが正常に実行されるまで待機し、一時停止タスクに到達します。プレイブックのこの段階では、Oracle Linuxのインストールが完了し、インスタンスの準備ができました。前回の再生をノートにとります。この再生では、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、および演習の実行中に必要なその他のデプロイメント情報が出力されます。

Oracle Linux 7からOracle Linux 8へのアップグレードの準備

この演習で使用するインスタンスには、環境固有の事前構成済の設定(プロキシ設定など)があります。

通常実行される一部のアップグレード前チェックは、この環境では不要であるためスキップされます。

Leappでアップグレードする前に行う必要があるシステムおよびカーネルの前提条件とアップグレード前のチェックの完全なリストは、次のドキュメント・リンクから確認できます: Oracle Linux 8 - 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ドキュメントのアップグレードの準備を参照してください。

アップグレード前チェックは、システムのステータスを評価し、競合が発生する可能性がある場所を特定するためにいつでも使用できます。システムは変更されませんが、レポート・ファイルとデバッグ・ログが作成されます。これには、システム、その構成および潜在的なアップグレードの問題に関する情報が含まれます。

  1. leapp preupgradeコマンドを実行して、アップグレード前プロセスを開始します。

    この演習システムはクラウド・インスタンスであるため、コマンド・スイッチ--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.txtファイルと leapp-report.jsonファイル、および answerfileが作成されます。デバッグ情報は、leapp-preupgrade.logファイルに保存されます。

    この環境では、Reports summary:セクションで、Inhibitors:は、アップグレードを禁止する2つの問題があることを示します。HIGHMEDIUMLOWおよびINFOとして記載されている他の非禁止の重大度の問題もあります。これは対処する必要がありますが、アップグレードを妨げることはありません。

    詳細は、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
    

    2つのエントリが存在し、有効になっていることを確認します。

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

    ノート:必要に応じて、sudo vi /etc/ssh/sshd_configコマンドを使用してsshd_configを編集し、2つの設定を追加することもできます。

  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
    

    ノート:ラボ・システムはクラウド・インスタンスであるため、コマンド・スイッチ--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 - 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を編集して、以前のアップグレードからの以前のleappパッケージを参照するexclude=行をコメントアウトします。

    ノート:このステップは、Oracle Linux 7から8への以前のアップグレード後にシステムを準備するためにのみ実行されます。

    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への以前のアップグレード後にシステムを準備するためにのみ実行されます。

    sudo dnf install -y NetworkManager 
    sudo systemctl unmask NetworkManager 
    sudo systemctl start NetworkManager 
    sudo systemctl enable NetworkManager
    
    
  6. 適用されなくなったカーネル、カーネル・モジュールおよび残りのパッケージを削除します。名前にel7があるものを検索します。

    ノート:このステップは、Oracle Linux 7から8への以前のアップグレード後にシステムを準備するためにのみ実行されます。

    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ドキュメントのアップグレードの準備を参照してください。

leapp preupgradeコマンドを実行してアップグレード・プロセスをテストし、エラーまたは阻害剤を報告します。

このクラウド・インスタンスでも、コマンド・スイッチ--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. Leappアップグレードがブロックされないようにするには、ファイアウォール構成ファイル/etc/firewalld/firewalld.confAllowZoneDriftingを無効にします。

    sudo sed -i 's/^AllowZoneDrifting=.*/AllowZoneDrifting=no/' /etc/firewalld/firewalld.conf
    
  3. /var/log/leapp/answerfileのOSWatcherエントリに応答します。これにより、leapp-report.txtファイル内の2番目の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 Help Centerを参照してください。