第8章 Leapp アップグレードのためのオーバークラウド設定

オーバークラウドのアップグレードに向けた準備を行うには、いくつかの Leapp 設定を完了する必要があります。

8.1. アップグレード環境ファイルの作成

アップグレードプロセスでは、環境ファイルを使用して、アップグレードプロセスを有効にして特定のアップグレードパラメーターを設定します。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. templates ディレクトリーに upgrades-environment.yaml という名前の環境ファイルを作成します。

    $ touch templates/upgrades-environment.yaml
  3. ファイルを編集し、以下の必須コンテンツを追加します。

    parameter_defaults:
      UpgradeInitCommand: |
        sudo dnf module disable -y container-tools:rhel8
        sudo dnf module enable -y container-tools:2.0
        sudo dnf module disable -y virt:rhel
        sudo dnf module enable -y virt:8.2
      UpgradeLeappCommandOptions: "--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"
    • UpgradeInitCommand は、ノードでアップグレードを開始する前に director が実行するバッシュコマンドのセットを設定します。この場合、デフォルトの container-tools:rhel8 モジュールから container-tools:2.0 に切り替える dnf コマンドを使用するように、パラメーターを設定します。
    • UpgradeLeappCommandOptions は、Leapp ツールに渡す追加のオプションを設定します。この場合、Leapp による移行に役立つ Red Hat OpenStack Platform リポジトリーを有効にするように、パラメーターを設定します。
  4. upgrades-environment.yaml ファイルを保存します。

8.2. アップグレードのパラメーター

パラメーター説明

UpgradeInitCommand

アップグレードプロセスを初期化するためにすべてのオーバークラウドノード上で実行するコマンドまたはスクリプトのスニペット。たとえば、リポジトリーの切り替えなど。

UpgradeInitCommonCommand

アップグレードプロセスに必要な共通のコマンド。操作者は通常このパラメーターを変更する必要はなく、major-upgrade-composable-steps.yaml および major-upgrade-converge.yaml 環境ファイルで設定および設定解除されます。

UpgradeLeappCommandOptions

Leapp コマンドに追加するその他のコマンドラインオプション

UpgradeLeappDebug

Leapp の実行中にデバッグのアウトプットを出力します。デフォルト値は True です。

UpgradeLeappDevelSkip

開発/テスト環境で Leapp を実行する場合は、環境変数を設定して Leapp の確認を省略します。たとえば、LEAPP_DEVEL_SKIP_RHSM=1 と設定します。

UpgradeLeappEnabled

オペレーティングシステムのアップグレードに Leapp を使用します。デフォルト値は False です。

UpgradeLeappRebootTimeout

Leapp による OS アップグレードフェーズのタイムアウト時間 (秒単位)。デフォルト値は 3600 です。

UpgradeLeappToInstall

Leapp によるアップグレード後にインストールするパッケージの一覧

UpgradeLeappToRemove

Leapp によるアップグレード時に削除するパッケージの一覧

8.3. オーバークラウドノードへの Leapp データのコピー

それぞれのオーバークラウドノードには、Leapp データファイルが必要です。director は、アンダークラウドの /etc/leapp/files ディレクトリーにあるデータファイルを、各オーバークラウドの同じ場所に自動的にコピーします。pes-events.json および repomap.csv ファイルがアンダークラウドの /etc/leapp/files ディレクトリーにまだ保存されていることを確認します。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. アンダークラウドの /etc/leapp/files ディレクトリーを確認します。

    $ sudo ls /etc/leapp/files/
重要

これらのファイルが削除されている場合は、ナレッジベースのアーティクル「RHEL 7 から RHEL 8 へのインプレースアップグレード時に Leapp ユーティリティーで必要なデータ」に添付されているファイルをダウンロードし、それらのファイルをアンダークラウドの /etc/leapp/files/ ディレクトリーに保存します。

8.4. オーバークラウドノードでの予測可能な NIC 名の使用

オーバークラウドノードで Leapp によるアップグレードを実施する前に、カーネルベースの NIC 名が使用されているかどうかを確認する必要があります。この NIC 名には、通常 eth の接頭辞が含まれます。NIC の割り当てに関して、通常これらの NIC 名は予測可能ではありません。ノード上のいずれかの NIC で eth の接頭辞が使用されていると、Leapp によるアップグレードに失敗します。

前提条件

  • アンダークラウドの準備プロセス中に作成された playbook-nics.yaml Playbook。playbook-nics.yaml Playbook は、イーサネットデバイス、ブリッジ、および Linux ボンディングを使用するほとんどのオーバークラウドネットワーク設定のシナリオに対応します。お使いの環境でこれらのデバイス種別以外の追加設定が必要な場合は、手順を進める前に以下の推奨事項に従ってください。

    • 実際のオーバークラウドノードと類似したネットワーク設定の別システムで Playbook をテストする。
    • Playbook を変更し、他のデバイス種別の設定内の eth プレフィックスの名称変更に対応する。
    • 以下の手順を完了したら、オーバークラウドノードのネットワーク設定を確認する。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. すべてのオーバークラウドノードで playbook-nics.yaml Playbook を実行します。

    $ ansible-playbook -i ~/inventory.yaml playbook-nics.yaml

    この Playbook により、新しい NIC の接頭辞が em に設定されます。別の NIC 接頭辞を設定するには、Playbook の実行時に prefix 変数を設定します。

    $ ansible-playbook -i ~/inventory.yaml -e prefix="mynic" playbook-nics.yaml
  3. 標準のリブート手順を使用して、オーバークラウドノードをリブートします。詳しくは、「ノードのリブート」を参照してください。

8.5. オーバークラウドでの SSH root 権限パラメーターの設定

Leapp によるアップグレードでは、PermitRootLogin パラメーターが各ノードの /etc/ssh/sshd_config ファイルに存在するかどうかを確認します。このパラメーターを、明示的に yes または no のいずれかに設定する必要があります。

セキュリティー上の理由から、オーバークラウドノードで root ユーザーへの SSH アクセスを無効にするには、このパラメーターを no に設定します。

前提条件

  • オーバークラウドノードの Ansible インベントリーファイル

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. playbook-ssh.yaml という名前のファイルを作成し、以下のコンテンツをファイルに貼り付けます。

    ---
    - name: Configure SSH PermitRootLogin parameter
      hosts: overcloud
      become: yes
      tasks:
        - name: Set the PermitRootLogin parameter to no
          lineinfile:
            path: /etc/ssh/sshd_config
            state: present
            line: "PermitRootLogin no"
  3. Playbook を実行します。

    $ ansible-playbook -i ~/inventory.yaml playbook-ssh.yaml