SaltStack Config を以前のバージョンから最新の安定したバージョンにアップグレードできます。

アップグレードするときのベスト プラクティス

アップグレードの計画時には、以下のガイドラインに従ってください。

  • [インストーラまたは手動のインストール手順を使用してアップグレードしない。]SaltStack Config インストールをアップグレードする場合は、次のアップグレード手順を参照してください。
  • [最適な結果を得るために、1 つのメジャー リリースから次のメジャー リリースに順番にアップグレードする。]ベスト プラクティスとして、必ず SaltStack Config の最新のメジャー バージョンから新しいリリースにアップグレードしてください。古いリリースを使用している場合は、1 つのリリースから次のリリースに順番にアップグレードします。
  • [データをバックアップする。]データの損失を防ぐために、データをバックアップします。
  • [ネットワーク アクティビティが低い時間帯にアップグレードを実行する。]データベースのアップグレードには、データの再インデックス化が必要です。データの複雑さによっては、データベースのアップグレードに数時間かかる場合があります。サービスの中断を防ぐには、ビジネス活動が低下する時間帯にデータベースをアップグレードするか、アップグレードの前にデータベースをトリミングしてください。
  • [データベースに古いコマンドが保存されているかどうかを確認する。]PostgreSQL データベースには、実行されていない古いコマンドが保存されている場合があります。これらのコマンドは、アップグレード中に、マスター プラグインを再起動するときに実行される場合があります。この問題を回避するには、データベースに古いコマンドが保存されているかどうかを確認し、定義された時間より古いジョブのスキップを有効にします。
  • [展開前にアップグレードをテストする。]可能であれば、テスト環境でリハーサルを実行してみることで、アップグレードにかかる時間を把握できます。
  • [まず、ガイドを通読する。]アップグレードの実装前に、このガイドを 1 度通読することも検討してください。必要なタスクの理解、チームでの計画の必要性、関係者への保留中の変更についての通知の必要性などを判断できます。

古いバージョンからのアップグレード

ベスト プラクティスとして、必ず SaltStack Config の最新のメジャー バージョンから新しいリリースにアップグレードしてください。最新リリースよりも前のバージョンからアップグレードする場合は、1 つのメジャー リリースから次のメジャー リリースに順番にアップグレードすることで最適な結果が得られる場合があります。

以前のバージョンの SaltStack Config にアップグレードする手順については、アップグレード元のリリースに固有のアップグレード手順を参照してください。以前のリリースのアップグレード手順は、以降のリリースのインストール ガイド PDF に記載されています。たとえば、5.5 から 6.0 にアップグレードする必要がある場合は、6.0 のインストール PDF に記載されているアップグレード手順を参照してください。

SaltStack Config バージョン 8.4 以降の場合は、このページの上部にあるバージョン セレクタを使用して、お使いの製品バージョンに適したアップグレード ガイドを選択します。バージョン 8.3 以前の場合は、次の表の PDF ガイドを使用します。

バージョン インストールおよびアップグレード ガイド (PDF)
8.3 8.3 インストールおよびアップグレード ガイド
6.4 6.4 インストールおよびアップグレード ガイド
6.3 6.3 インストールおよびアップグレード ガイド
6.2 6.2 インストールおよびアップグレード ガイド
6.1 6.1 インストールおよびアップグレード ガイド
6.0.1 6.0.1 インストールおよびアップグレード ガイド
6.0 6.0 インストールおよびアップグレード ガイド

SaltStack Config のアップグレード方法

SaltStack Config をアップグレードするには、以下のタスクをこの順序で実行します。
  • SaltStack Config の特定のインストールに不可欠な特定のファイルやディレクトリなどのデータをバックアップする
  • PostgreSQL をアップグレードする(オプション、推奨)
  • Salt インフラストラクチャをアップグレードする(オプション、推奨)
  • アップグレード ファイルをダウンロードする
  • RaaS ノードのアップグレード
  • マスター プラグインを使用してすべての Salt マスターをアップグレードする

Lifecyle Manager を使用した SSC のアップグレードの詳細については、LCM ドキュメントのvRealize Automation SaltStack Config のアップグレードを参照してください。

SaltStack Config のファイルおよびディレクトリのバックアップ

次のファイルおよびディレクトリには、カスタムの SaltStack Config 構成が含まれているため、アップグレードの前にバックアップする必要があります。

  1. RaaS ノードで、次のディレクトリ全体をバックアップします。
    • /etc/raas/raas
    • /etc/raas/raas.secconf
    • /var/log/raas
    • /etc/raas/pki/
    注:

    pki ディレクトリには隠しファイルが含まれているため、必ずディレクトリ全体をバックアップします。/var/log/raas ディレクトリ内のログ ファイルをバックアップするかどうかはオプションです。アップグレード プロセスでトラブルシューティングが必要になった場合は、クリーンなログ ファイルを提供するためにログ ファイルをクリアします。

  2. 各 Salt マスターで、/etc/salt/master.d/raas.conf および /etc/salt/master.d/eAPIMasterPaths.conf ファイルをバックアップします。
    注:

    SaltStack Config を最初にインストールした方法によっては、eAPI Salt マスター パスが代わりに /etc/salt/master.d/raas.conf ファイル内に記述されている場合があります。

データベース スキーマのバックアップ

RaaS ノードをアップグレードすると、データベース スキーマが更新されます。このため、アップグレードの前には必ずデータベースのバックアップを作成してください。

データベースをバックアップするには、PostgreSQL データベース名を調べてから、その内容をコピーする必要があります。

  1. PostgreSQL サーバで、次のファイルをバックアップします。
    • postgres.conf
    • pg_hba.conf
  2. 次のコマンドを使用して、postgres ユーザーとしてログインします。
    sudo su - postgres
  3. データベース名を確認します。次のコマンドを使用して、PostgreSQL に入り、データベースのリストを取得します。
    psql
    \l
  4. PostgreSQL を終了して postgres ユーザーとしてログアウトするために、Ctrl+D キーを押してから次のコマンドを実行します。
    exit
  5. データベースの内容をファイルにコピーします。次のコマンドで例を示します。
    pg_dump -U salt_eapi raas_db_name > postgres_raas_backup_$(date +%Y-%m-%d).sql

PostgreSQL データベースのアップグレード

SaltStack Config では PostgreSQL 9.6 データベースが必須ですが、PostgreSQL 13.7 が推奨されます。推奨されるバージョンの PostgreSQL は、SaltStack Config インストーラに含まれています。

PostgreSQL の最新バージョンへのアップグレードは必須ではありません。ただし、PostgreSQL をアップグレードすると、パフォーマンスが向上する可能性があります。PostgreSQL の最新バージョンへのアップグレードの手順については、PostgreSQL upgradeを参照してください。

Redis データベースのアップグレード

SaltStack Config では Redis 5.x データベースが必須ですが、Redis 6.2.7 が推奨されます。推奨されるバージョンの Redis は、SaltStack Config インストーラに含まれています。

Redis 5.x の最新バージョンへのアップグレードは必須ではありません。ただし、Redis をアップグレードすると、パフォーマンスが向上する可能性があります。Redis のアップグレードの手順については、Redis Administrationを参照してください。

Salt のアップグレード

Salt をアップグレードする場合は、最初にマスターをアップグレードする必要があります。マスターよりも新しいバージョンの Salt でミニオンを実行すると、ミニオンにマスターでまだ使用できない変更が含まれる可能性があるため、予期したとおりに機能しない場合があります。また、可能な限り、新しいマスターと古いミニオン間の後方互換性は保持されます。一般的に、このポリシーに対する例外はセキュリティに脆弱性がある場合のみです。

パフォーマンスの最適化のために、インフラストラクチャ内のすべての Salt コンポーネントが Salt の最新のメジャー バージョン上で実行されるようにします。

重要: Salt バージョン 3005 および 3005.1 では、 SaltStack Config でサポートされていない、または互換性のない onedir インストール パッケージを使用します。Salt バージョン 3005 または 3005.1 で SaltStack Config を使用するには、従来のインストーラ パッケージのみを使用してください。Salt バージョン 3005/3005.1 および onedir の詳細については、 KB 89728を参照してください。

Salt Crystal パッケージのアップグレードの手順については、How to Upgrade Salt Crystalを参照してください。

ヒント: ネットワークがエアギャップ環境の場合を除き、Salt をインターネット経由で定期的に更新できない場合、ネットワークで問題が発生する可能性があります。このため、Salt Crystal パッケージを使用するのではなく、Salt を事前にインストールすることを推奨します。

RaaS ノードのアップグレード

PostgreSQL、Redis、および Salt を最新バージョンにアップグレードしたら、RaaS ノードを以前のバージョンから最新バージョンにアップグレードできます。

注: データベースのアップグレードには、データの再インデックス化が必要です。データが複雑な場合、データベースのアップグレードに数時間かかる場合があります。
重要:

RaaS ノードをアップグレードする前に、データの損失を回避するために、[システム データをバックアップする必要があります]

RaaS ノードをアップグレードするには、次の手順に従います。

  1. Customer Connect からアップグレード ファイルをダウンロードします。
  2. デフォルトのファイル システム、ピラー データ、およびジョブに加えた変更を、新しいファイルまたはジョブとして保存します。
  3. デフォルトのターゲットに対して行われたすべてのピラーの割り当てをメモします。これらはアップグレード後に再割り当てする必要があります。
  4. 次のコマンドを使用して、RaaS サービスを停止します。
    sudo systemctl stop raas
  5. /var/log/raas ディレクトリのログ ファイルを削除します。ログ ファイルをクリアしておくと、トラブルシューティングが必要になった場合に、クリーンなログ ファイルを取得できます。
  6. 次のコマンドを使用して、現在インストールされているバージョンの API (RaaS) を削除します。
    sudo yum remove raas
  7. 最新の RPM をインストールして、RaaS ノードをアップグレードします。次のコマンド例を、RPM の実際のファイル名に置き換えて使用します。
    sudo yum install raas-rpm-file-name.rpm
  8. [重要:]次のファイルのバックアップを復旧します。
    • /etc/raas/raas
    • /etc/raas/raas.secconf
    • /etc/raas/pki/
  9. 次のコマンドを使用して、raas ユーザーの権限を更新します。
    sudo chown -R raas:raas /etc/pki/raas/certs
  10. オプション:SaltStack SecOps ライセンスを持っていて、コンプライアンス ライブラリを追加する場合は、/etc/raas/raas ファイルに次の新しいセクションを追加します。
    sec:
      ingest_override: true
      locke_dir: locke
      post_ingest_cleanup: true
      username: 'secops'
      content_url: 'https://enterprise.saltstack.com/secops_downloads'
      download_enabled: true
      download_frequency: 86400
      stats_snapshot_interval: 3600
      compile_stats_interval: 10
      ingest_on_boot: True
      content_lock_timeout: 60
      content_lock_block_timeout: 120
    注:

    この手順はオプションであり、有効な SaltStack SecOps ライセンスを持つ組織にのみ適用されます。このアドオン モジュールは、SaltStack Config バージョン 6.0 以降で使用できます。/etc/raas/raas 構成ファイル内の以前の構成オプションは、これらのアドオン モジュールに固有です。

  11. オプション:SaltStack SecOps ライセンスを持っていて、脆弱性ライブラリを追加する場合は、/etc/raas/raas ファイルに次の新しいセクションを追加します。
    vman:
      vman_dir: vman
      download_enabled: true
      download_frequency: 86400
      username: vman
      content_url: 'https://enterprise.saltstack.com/vman_downloads'
      ingest_on_boot: true
      compile_stats_interval: 60
      stats_snapshot_interval: 3600
      old_policy_file_lifespan: 2
      delete_old_policy_files_interval: 86400
      tenable_asset_import_enabled: True
      tenable_asset_import_grains: ['fqdn', 'ipv4', 'ipv6', 'hostname', 'mac_address', 'netbios_name',
                                    'bios_uuid', 'manufacturer_tpm_id', 'ssh_fingerprint',
                                    'mcafee_epo_guid', 'mcafee_epo_agent_guid', 'symantec_ep_hardware_key',
                                    'qualys_asset_id', 'qualys_host_id', 'servicenow_sys_id', 'gcp_project_id',
                                    'gcp_zone', 'gcp_instance_id', 'azure_vm_id', 'azure_resource_id',
                                    'aws_availability_zone', 'aws_ec2_instance_ami_id',
                                    'aws_ec2_instance_group_name', 'aws_ec2_instance_state_name',
                                    'aws_ec2_instance_type', 'aws_ec2_name', 'aws_ec2_product_code',
                                    'aws_owner_id', 'aws_region', 'aws_subnet_id', 'aws_vpc_id',
                                    'installed_software', 'bigfix_asset_id'
                                    ]
    注:

    この手順はオプションであり、有効な SaltStack SecOps ライセンスを持つ組織にのみ適用されます。このアドオン モジュールは、SaltStack Config バージョン 6.0 以降で使用できます。/etc/raas/raas 構成ファイル内の以前の構成オプションは、これらのアドオン モジュールに固有です。

  12. 現在、RaaS には、古いジョブに関連する既知の問題があります。アップグレード時に、一部のユーザーが、保留中の状態でスタックされている古いジョブのキューに気づく場合があります。これらのジョブを先に消去しておかないと、RaaS ノードをアップグレードしたときに、これらのジョブが実行される可能性があります。

    そうなることを回避するには、まず、古いコマンドがデータベースに格納されているかどうかを確認します。PostgreSQL ノードで、次のコマンドを使用して、保留中のジョブを調べます。

    select count(1) from commands where state='new';

    結果として、保留中のジョブの数が表示されます。ジョブの数が 0 である場合は、残りのアップグレード プロセスを続行します。

  13. 次のコマンドを使用して、RaaS サービス データベースをアップグレードします。
    sudo su - raas
    raas upgrade
    注:

    データベースのサイズによっては、アップグレードに数分から 1 時間以上かかることがあります。エラーが発生した場合は、/var/log/raas/raas ログ ファイルで詳細を確認します。

  14. アップグレード後、次のコマンドを使用して、raas ユーザーのセッションを終了します。
    exit
  15. 次のコマンドを使用して、RaaS サービスを開始します。
    sudo systemctl enable raas
    sudo systemctl start raas

マスター プラグインのアップグレード

RaaS ノードが正常にアップグレードされたら、SaltStack Config への接続にマスター プラグインを使用する Salt マスターをアップグレードできます。

注:

Salt マスターをアップグレードする前に、Salt マスターに pip3 アプリケーションがインストールされていることを確認してください。マスター プラグインの最新バージョンからアップグレードした場合、このアプリケーションはすでにインストールされています。

Salt マスターでマスター プラグインをアップグレードするには、次の手順に従います。

  1. 次のコマンドを使用して、salt-master サービスを停止します。
    sudo systemctl stop salt-master
  2. Salt マスターで実行されている Python のバージョンを確認します。Python 3.6 以降が実行されている場合は、変更の必要はありません。そうでない場合は、SSEAPE モジュールの以前のバージョンを削除します。(SSEAPE は、Salt マスターの SaltStack Config プラグインです。)例:

    RHEL/CentOS

    sudo rm -rf /usr/lib/python3.6/site-packages/SSEAPE*

    Ubuntu

    sudo rm /usr/lib/python3.6/dist-packages/SSEAPE*
  3. 更新された Python wheel を手動でインストールして、マスター プラグインをアップグレードします。次のコマンド例を、wheel ファイルの実際の名前に置き換えて使用してください。

    RHEL/CentOS

    sudo pip3 install SSEAPE-file-name.whl --prefix /usr

    Ubuntu

    sudo pip3 install SSEAPE-file-name.whl
    注:

    一部のユーザーは、オペレーティング システムに合わせて、構文を pip3.6 または pip36 に変更する必要があります。

  4. さまざまなモジュールへのパスを参照するように、/etc/salt/master.d/eAPIMasterPaths.conf ファイルを編集して API (RaaS) モジュールのパスを更新します。たとえば、このファイル内のすべての python2.7 の参照を python3.6 に変更します。
    注:

    SaltStack Config を最初にインストールした方法によっては、eAPI Salt マスター パスが代わりに /etc/salt/master.d/raas.conf ファイル内に記述されている場合があります。

  5. /etc/salt/master.d/raas.confengines セクションを調べて、以下と一致することを確認します。
    engines:
      - sseapi: {}
      - eventqueue: {}
      - rpcqueue: {}
      - jobcompletion: {}
      - keyauth: {}
    注:

    問題が発生した場合は、/etc/salt/master.d/raas.conf ファイルおよび /etc/salt/master.d/eAPIMasterPaths.conf ファイルのバックアップの復旧が必要になることがあります。

  6. Salt マスター キー認証(推奨)を使用している場合は、sseapi_pubkey_path が構成されていること、および sseapi_usernamesseapi_password/etc/salt/master.d/raas.conf でコメントアウトされていることを確認してください。
    sseapi_pubkey_path: /etc/salt/pki/master/sseapi_key.pub
    
    #sseapi_username:
    #sseapi_password:
  7. master_job_cache および event_return のエントリが sseapi に設定されていることを確認します。pgjsonb リターナは、使用できません。
  8. 次のコマンドを使用して、salt-master サービスを開始します。
    sudo systemctl start salt-master

これで、アップグレード プロセスが完了しました。その他のエラーが発生した場合は、トラブルシューティングを参照してください。