9 Oracle Linux Automation Managerのアップグレードと移行

次の章では、Oracle Linux Automation Managerのアップグレード手順について説明します。信頼性の向上と容量の拡張が必要な場合は、単一のハイブリッド設定からクラスタ設定に移行することもできます。

バージョン16へのデータベースのアップグレード

データベースをバージョン16にアップグレードするには:

  1. Oracle Linux Automation Manager 2.2ノードごとに、ターミナルにサインインします。
  2. Oracle Linux Automation Managerを停止します。
    sudo systemctl stop ol-automation-manager
  3. データベースをホストしているローカルまたはリモートのユーザー・アカウントにログインします。
    sudo su - postgres
  4. 次のコマンドを使用してデータベースをエクスポートします。このコマンドは、データベースのリストアに必要なすべてのSQLコマンドと入力データを含むスクリプト・ファイルを作成します。たとえば、次のコマンドは、選択したバックアップ・ディレクトリにolam.dumpファイルを作成します。
    pg_dumpall > /var/tmp/olam.dump
  5. データベースをホストしているユーザー・アカウントを終了します。
    exit
  6. データベース・サーバーを停止します:
    sudo systemctl stop postgresql
  7. 既存のデータベース・データ・ディレクトリを削除(およびオプションでバックアップ)します。たとえば、次のコマンドはホーム・ディレクトリのバックアップ・ファイルを削除して作成します:
    sudo mv /var/lib/pgsql/data/ ~/data.old
  8. 現在のバージョンのデータベースを削除します。
    sudo dnf remove postgresql
  9. postgresql 16モジュール・ストリームを有効にします。
    sudo dnf module reset postgresql
    sudo dnf module enable postgresql:16

    ノート:

    Postgresql 16のライフサイクルの詳細は、『Oracle Linux: Oracle Linuxでのソフトウェアの管理』のストリーム・モジュールのアプリケーション・ライフサイクルについて説明している付録を参照してください。
  10. データベースをインストールします。
    sudo dnf install postgresql-server
  11. データベースを初期化します:
    sudo postgresql-setup --initdb
  12. /var/lib/pgsql/data/postgresql.confファイルで、パスワードのストレージ方式をmd5からscram-sha-256に切り替えます。たとえば、次のコマンドで切替えが実行されます:
    sudo sed -i "s/#password_encryption.*/password_encryption = scram-sha-256/"  /var/lib/pgsql/data/postgresql.conf
  13. データベースを起動し、/var/tmp/olam.dumpファイルをインポートします。
    sudo systemctl start postgresql
    sudo su - postgres
    psql -d postgres -f /var/tmp/olam.dump
    exit
  14. データベース・ユーザー・アカウントにパスワードを再適用します:
    sudo -u postgres psql
    \password awx
  15. awxユーザーのパスワードを入力し、確認します。
    Enter new password for user "awx": 
    Enter it again: 
    exit
  16. 次のコマンドを実行して、データベースが使用可能かどうかを確認します:
    sudo su - postgres -c "psql -l |grep awx"
    次のような出力が表示されます。
    awx | awx | UTF8 | libc | en_US.UTF-8 | en_US.UTF-8 | | |
  17. rootユーザーとして、/var/lib/pgsql/data/pg_hba.confファイルに次の行を追加します:
    host  all  all 0.0.0.0/0 scram-sha-256
  18. rootユーザーとして、/var/lib/pgsql/data/postgresql.confファイルの# CONNECTIONS AND AUTHENTICATIONセクションで、listen_addresses = のテキストの後に、データベースのIPアドレスまたはホスト名を一重引用符で囲んで記述した行を追加します。たとえば、次のようになります:
    listen_addresses = '<IP address or host name>'
    
    #listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                            # comma-separated list of addresses;
                                            # defaults to 'localhost'; use '*' for all
                                            # (change requires restart)
    #port = 5432                            # (change requires restart)

    前述の例では、<IP address or hostname>はデータベースのIPアドレスまたはホスト名です。

  19. リモート・データベースがある場合は、データベースを実行しているホストの5432/tcpポートが開いていることを確認します。たとえば、次のコマンドは、portsパラメータで正しいポートが開いていることを示しています:

    sudo firewall-cmd --list-all
    public (active)
    target: default
    icmp-block-inversion: no
    interfaces: enp1s0
    sources:
    services: cockpit dhcpv6-client ssh
    ports: 5432/tcp
    protocols:
    forward: no
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:
  20. リモート・データベース・ホストが開いていない場合は、次のコマンドを実行します:
    sudo firewall-cmd --add-port=5432/tcp --permanent
    sudo firewall-cmd --reload
  21. 次を使用して、メモリー要件パラメータを計算し、更新します:
    max_connections = 1024
    shared_buffers = total_mem_mb*0.3
    work_mem = total_mem_mb*0.03
    maintenance_work_mem = total_mem_mb*0.04
    前述の例では、total_mem_mbはデータベース・サーバーをホストするシステムの合計メモリー・サイズ(MB)です。たとえば、システムで使用可能なメモリーの合計が18,000 MBの場合、このワークシートには次の情報が含まれます:
    max_connections = 1024
    shared_buffers = 18000*0.3
    work_mem = 18000*0.03
    maintenance_work_mem = 18000*0.04

    最終的に追加する数値は次のとおりです:

    max_connections = 1024
    shared_buffers = 5400MB
    work_mem = 540MB
    maintenance_work_mem = 720MB
  22. 計算した値を/var/lib/pgsql/data/postgresql.confファイルに追加します。
  23. データベース・サーバーを起動します。
    sudo systemctl restart postgresql
  24. すべてのOracle Linux Automation Manager 2.2サーバーを再起動します。
    sudo systemctl start ol-automation-manager
  25. Oracle Linux Automation Managerの機能がデータベースのアップグレード前と同様に継続していることを確認します。これらの確認を行う様々な方法の詳細は、「サービス・メッシュの表示」を参照してください。

リリース2.2からリリース2.3へのアップグレード

Oracle Linux Automation Managerを2.2から2.3にアップグレードするには、次の手順を使用します:
  1. Oracle Linux Automation Managerノードをバックアップします。
  2. すべてのホストが最新のソフトウェア・バージョンに更新されていることを確認します。たとえば、次のようになります
    sudo dnf update
  3. データベースがアップグレードされていることを確認します。「バージョン16へのデータベースのアップグレード」を参照してください。
  4. コントロール・ノードまたはハイブリッド・ノードにログインします。
    sudo su -l awx -s /bin/bash
  5. クラスタ内のすべてのハイブリッド・ノード、コントロール・ノード、実行ノードおよびホップ・ノードに対して、次のコマンドを繰り返します。

    awx-manage provision_instance --hostname=<hostname or ip address> --listener_port=<listener_port> --node_type=<node_type>
    前述の例では、変数は次のとおりです:
    • hostname or IP addressは、Oracle Linux Automation Managerを実行するシステムのホスト名またはIPアドレスです。このホスト名またはIPアドレスは、/etc/receptor/receptor.confファイルのノードIDを構成したときに使用したホスト名またはIPアドレスと一致している必要があります(「コントロール・プレーン・サービス・メッシュの構成と起動」を参照)。ホスト名を使用する場合は、ホストが解決可能である必要があります。

    • listener_portはノードのポート番号です。たとえば、27199です。

    • node_typeはノード・タイプです。有効な値は、controlexecutionhopまたはhybridです。
  6. ハイブリッドまたはコントロール・ノード・セッションを終了します:
    exit
  7. Oracle Linux Automation Manager 2.2の各ノード(コントロール・ノード、実行ノード、ホップ・ノードまたはハイブリッド・ノード)で、ターミナルにサインインし、次を実行します:
    1. システムを停止します:
      sudo systemctl stop receptor-awx
      sudo systemctl stop ol-automation-manager
    2. まだ作成されていない場合、/etc/tower/conf.dフォルダにカスタム設定ファイルを作成します。カスタム設定ファイルで指定した設定は/etc/tower/settings.pyの設定に優先し、ソフトウェア更新によってカスタム設定が変更されないようにします。カスタム設定ファイルを作成するには、次を実行します:
      1. /etc/tower/conf.dフォルダにカスタム設定ファイルを作成します。たとえば、次のようになります:
        touch /etc/tower/conf.d/olam.py
      2. Oracle Linux Automation Manager固有の設定を新しいファイルに追加します。たとえば、CLUSTER_HOST_IDやDATABASESなどのパラメータを追加できます。詳細は、「ホストの設定」を参照してください。
      3. カスタム設定ファイルの所有権とファイル権限を設定します。たとえば、次のようになります
        sudo chown awx:awx /etc/tower/conf.d/olam.py
        sudo chmod 0640 /etc/tower/conf.d/olam.py
    3. システムを更新します:
      sudo dnf update oraclelinux-automation-manager-release-el8-2.3
      sudo mv /etc/yum.repos.d/oraclelinux-automation-manager-ol8.repo /etc/yum.repos.d/oraclelinux-automation-manager-ol8.repo.OLD
      sudo mv /etc/yum.repos.d/oraclelinux-automation-manager-ol8.repo.rpmnew /etc/yum.repos.d/oraclelinux-automation-manager-ol8.repo
      sudo dnf update
    4. 更新後に/etc/tower/settings.py.rpmnewが表示された場合は、次を実行します:
      sudo mv /etc/tower/settings.py /etc/tower/settings.py.OLD
      sudo mv /etc/tower/settings.py.rpmnew /etc/tower/settings.py

      ノート:

      /etc/tower/settings.py.OLDファイルに加えたカスタム設定を、ステップ7.bと同様の方法で /etc/tower/conf.d file to the /etc/tower/conf.dディレクトリに追加することを検討します(まだ追加していない場合)。
    5. /etc/nginx/conf.d/ol-automation-manager-nginx.conf.rpmnewファイルが表示された場合は、/etc/nginx/conf.d/ol-automation-manager-nginx.confファイルでカスタムの変更が検出されています。アップグレードの変更は、ol-automation-manager-nginx.conf.rpmnewファイルに記載されています。カスタムのol-automation-manager-nginx.confファイルでは、次の内容を確認します:
          location /favicon.ico { alias /var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/ui/build/static/media/favicon.ico; }
      
          location /static/ {
              alias /var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/ui/build/static/;
          }
      次のように変更します:
          location /favicon.ico { alias /var/lib/awx/venv/awx/lib/python3.11/site-packages/awx/ui/build/static/media/favicon.ico; }
      
          location /static/ {
              alias /var/lib/awx/venv/awx/lib/python3.11/site-packages/awx/ui/build/static/;
          }
    6. 次を使用して、2.3 olam-eeイメージをプルします。

      ノート:

      「ホストの設定」の説明に従ってGLOBAL_JOB_EXECUTION_ENVIRONMENTS変数とCONTROL_PLANE_EXECUTION_ENVIRONMENT変数を設定している場合は、これらの変数がolam-ee:2.3-ol8コンテナ・イメージを指すように更新します。olam-ee:2.3-ol8コンテナ・イメージがPrivate Automation Hubサーバー上にある場合は、必要に応じてpodman pullコマンドを変数と次のコマンドで変更してください。
      sudo su -l awx -s /bin/bash
      podman system migrate
      podman pull container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:2.3-ol8
      awx-manage makemigrations --merge
      awx-manage migrate
      awx-manage register_default_execution_environments
      exit
  8. すべてのノードで次のサービスを再起動します:
    sudo systemctl restart nginx
    sudo systemctl start receptor-awx
    sudo systemctl start ol-automation-manager

リリース2.3の単一インスタンス・デプロイメントからクラスタ化デプロイメントへの移行

Oracle Linux Automation Manager(ハイブリッド・ノード)の単一ホスト・インスタンス・デプロイメントをクラスタ化デプロイメント(コントロール・ノード、実行ノードおよびホップ・ノードのクラスタ)に移行するには、次を実行します:

  1. ハイブリッド・ノードのターミナルで、Oracle Linux Automation Managerを停止します。
    sudo systemctl stop ol-automation-manager
  2. データベース・ダンプ・ファイルを作成します。
    sudo su - postgres
    pg_dumpall > /var/tmp/olam.dump
  3. 「ローカルまたはリモート・データベースの設定」に記載されているリモート・データベースの設定手順を実行します。ただし、次の例外があります:
    1. 手順を開始する前に、ダンプ・ファイルをリモート・データベースにコピーします。たとえば、scpを使用します。
    2. ステップ7と8でデータベースを起動してステータスを確認した後、ダンプ・ファイルをインポートします:
      sudo su - postgres
      psql -d postgres -f /dirwithbackup/olam.dump
      exit
    3. データベース・ユーザー・アカウントの作成とデータベースの作成は、すでにダンプ・ファイルのパートに含まれているため、ステップ9から11はスキップします。
    4. データベースを再起動するまで、ステップ12から手順を続行します。
  4. リモート・データベースで、データベース・ユーザー・アカウントのパスワードを再適用します:
    sudo -u postgres psql
    \password awx
  5. awxユーザーのパスワードを入力し、確認します。
    Enter new password for user "awx": 
    Enter it again: 
    exit
  6. 単一インスタンスのハイブリッド・ノードにローカル・データベースがある場合は、リモート・データベース構成に対して次を実行します:
    1. Oracle Linux Automation Managerサーバーに戻り、カスタム設定ファイルを作成します。たとえば、次のようになります:
      sudo touch /etc/tower/conf.d/olam.py
    2. カスタム設定ファイルに次のDATABASESフィールドを追加します:
      DATABASES = {
          'default': {
              'ATOMIC_REQUESTS': True,
              'ENGINE': 'awx.main.db.profiled_pg',
              'NAME': 'awx',
              'USER': 'awx',
              'PASSWORD': 'password',
              'HOST': 'database hostname or ip address',
              'PORT': '5432',
          }
      }

      前述の例では、database hostname or ip addressは、リモート・データベースのホスト名またはIPアドレスです。ホスト名を使用する場合は、ホストが解決可能である必要があります。passwordは、リモート・データベースのパスワード(構成済の場合)です。

  7. カスタム設定ファイルの所有権とファイル権限を設定します:
    sudo chown awx:awx /etc/tower/conf.d/filename.py
    sudo chmod 0640 /etc/tower/conf.d/filename.py

    前述の例では、filenameはカスタム設定ファイルの名前です。たとえば、次のようになります

    sudo chown awx:awx /etc/tower/conf.d/olam.py
    sudo chmod 0640 /etc/tower/conf.d/olam.py
  8. ローカル・データベースを停止します。
    sudo systemctl stop postgresql
  9. サービス・メッシュで使用するポートを開きます。
    sudo firewall-cmd --add-port=27199/tcp --permanent
    sudo firewall-cmd --reload
  10. Oracle Linux Automation Managerを起動します。
    sudo systemctl start ol-automation-manager
  11. 既存のデータベース・データ・ディレクトリをバックアップして削除します。たとえば、次のコマンドはホーム・ディレクトリにバックアップ・ファイルを作成し、データベースを削除します:
    sudo mv /var/lib/pgsql/data/ ~/data.old
    sudo dnf remove postgresql 
  12. 次のコマンドを実行します。
    sudo su -l awx -s /bin/bash
  13. 次のコマンドを実行します
    awx-manage deprovision_instance --hostname=<hostname or IP address>
    awx-manage unregister_queue --queuename default
    awx-manage unregister_queue --queuename tower 
    awx-manage provision_instance --hostname=<hostname or IP address> --node_type=control
    awx-manage register_queue --queuename=controlplane --hostnames=<hostname or IP address>
    awx-manage add_receptor_address --instance=<hostname or ip address> --address=<hostname or ip address> --port=<listener_port> --canonical
    exit

    前述の例では、hostname or IP addressはOracle Linux Automation Managerを実行しているシステムのホスト名またはIPアドレスです。このホスト名またはIPアドレスは、/etc/receptor/receptor.confファイルのノードIDを構成したときに使用したホスト名またはIPアドレスと一致している必要があります(「コントロール・プレーン・サービス・メッシュの構成と起動」を参照)。ホスト名を使用する場合は、ホストが解決可能である必要があります。towerが存在し、使用されなくなった場合のみ、登録を解除する必要があります。listener_portはノードのポート番号です。たとえば、27199です。

  14. カスタム設定ファイル(例: /etc/tower/conf.d/olam.py)に、DEFAULT_EXECUTION_QUEUE_NAMEフィールドおよびDEFAULT_CONTROL_PLANE_QUEUE_NAMEフィールドを追加します:
    DEFAULT_EXECUTION_QUEUE_NAME = 'execution'
    DEFAULT_CONTROL_PLANE_QUEUE_NAME = 'controlplane'
  15. デフォルトのリーパー・タイムアウトである60秒よりも長く実行するように設計されたプレイブックがある場合は、カスタム設定ファイルにREAPER_TIMEOUT_SECパラメータを追加してタイムアウトを長くします。たとえば、次のようになります
    REAPER_TIMEOUT_SEC=<longest_playbook_time>

    前述の例では、<longest_playbook_time>は最長プレイブック実行時間を超える秒数です。

  16. Oracle Linux Automation Managerを再起動します。
    sudo systemctl restart  ol-automation-manager.service
  17. 元のアップグレード済ノードはコントロール・ノードに変換されました。アップグレードしたクラスタを完全に機能させるには、実行ノードをもう1つ追加する必要があります。クラスタの他のすべてのメンバーについては、「データベースとホストの準備」に記載されている手順に従います。ただし、リモート・データベースの設定はすでに完了しているため、除外します。その後、「クラスタ化デプロイメントへのOracle Linux Automation Managerのインストール」に記載されている手順に従って、他のすべてのホストをクラスタの一部としてインストールおよび構成します。

Oracle Linux Automation Engineリリース2.3へのプレイブックの移行

Oracle Linux Automation Engineリリース2.2のプレイブックをテストし、Oracle Linux Automation Managerリリース2.3で動作するかどうかを確認します。アップストリーム・プロジェクトでモジュール数の変更、一部のモジュールがコレクションになったこと、一部のモジュールが他のモジュールまたはコレクションにマージされたことなど、変更があった場合はプレイブックの更新が必要になる場合があります。

『Oracle Linux Automation Manager 2.3: リリース・ノート』に記載されているように、プレイブックが正しいバージョンのPythonを使用していることを確認します。カスタム実行環境については、Oracle Linux Automation Manager 2.3: Private Automation Hubユーザーズ・ガイドの概要の項を確認してください。