Automation Config のインストールでは、Automation Config インストーラで提供されているオーケストレーション highstate を実行します。highstate は Salt マスターで実行され、マルチノード環境を設定します。これにより、PostgreSQL、Redis、および RaaS ノードをホストする他の 3 台のノードに、中核となる Automation Config アーキテクチャがインストールされます。

注目: コンテナへの Automation Config の展開はサポートされず、推奨もされません。

インストールの最終目標は、ホスト機能がそれぞれ異なる 4 台のノードを配置することです。以下の各ノードは、Salt マスターのミニオンでもあります。

  • Salt マスター ノード
  • PostgreSQL データベース ノード
  • Redis データベース ノード
  • RaaS ノード(別名 Automation Config ノード)
注意:

特に、ノードへの Salt のインストールに記載されているすべての手順を実行することが重要です。特に、Automation Config インストーラに必要な依存関係をインストールの 4 台のノードすべてにインストールする[必要があります]。これを実行しなかった場合、マルチノードのインストールは失敗します。

必要な依存関係は次のとおりです。

  • OpenSSL
  • Enterprise Linux 用拡張パッケージ (EPEL)
  • Python 暗号化
  • Python OpenSSL ライブラリ

高可用性

複数の Salt マスターまたは複数の RaaS ノードを設定できます。1 台のノードで Salt マスター サービスを実行し、別のノードで 2 つ以上の他のサービスを組み合わせることもできます。この種のシステム アーキテクチャを構成する手順については、このガイドでは詳しく説明していません。

高可用性やカスタム アーキテクチャの要件については、コンサルティング サービスが必要な場合があります。ただし、同じタイプの複数のノードを設定する前に、通常はマルチノード インストールのシナリオから始めて、後で追加のアーキテクチャを構成します。

高可用性の詳細については、Automation Config の必須の依存関係を参照してください。

4 台のノードに関する主要データの記録

標準インストールを開始する前に、インストールに関係する 4 台のノードそれぞれに関する主要なデータを記録します。このデータは、インストール プロセスの実行中に複数回入力します。

インストールに関係する 4 台のノードそれぞれに関する次の主要なデータを記録します。

  • IP アドレスまたは DNS 名
  • ミニオン ID

各 IP アドレスとミニオン ID が属しているホスト(Salt マスター ノード、RaaS ノード、PostgreSQL データベース ノード、Redis データベース ノード)を明確に示す必要があります。

IP アドレスまたは DNS 名が誤っているとマルチノード インストールが失敗する可能性があるため、ベスト プラクティスとして IP アドレスまたは DNS 名が正しいことを確認します。

このデータは、参照用としてアクセスしやすい場所に保存してください。オーケストレーションを構成するときに、このデータを構成ファイルのいくつかの設定や変数に入力する必要があります。そのため、インストールが終わるまでこの記録を手元に置いておくと便利です。

注:

仮想環境の場合は、パブリック アドレスではなく内部アドレスを指定するように注意します。

[固定 IP アドレスと動的 IP アドレス]

Redis および PostgreSQL ホストには、構成ファイルが参照する固定 IP アドレスまたは DNS 名が必要です。RaaS ノードの展開方法によっては、RaaS ノードにも固定 IP アドレスまたは DNS 名が必要になる場合があります。構成内で動的 IP アドレスに依存すると、環境が変化および破損する可能性があります。

[カスタム ミニオン ID の設定(オプション)]

ミニオン ID は、Salt マスターによって管理される各ミニオンに付けられる一意の名前です。デフォルトでは、ミニオンはシステムのホスト名によって Salt マスターから識別されます。ただし、機能やネットワーク内の場所を示すカスタムの ID を割り当てることができます。

ミニオン ID をカスタマイズする場合、ID はできるかぎり簡潔で、役割を説明するものにします。たとえば、Web サーバの 1 つに apache-server-1 という名前を付けたり、データセンター内の場所に基づいて datacenter-3-rack-2 を使用したりすることができます。名前を説明的なものにし、後で参照する際に分かりやすくすることが目的です。

ミニオン ID を宣言するには、次の手順に従います。

  1. ミニオンのターミナルで、ミニオンの minion.conf ファイルを含むディレクトリに移動します。デフォルトでは、ディレクトリの場所は etc/salt/minion.d です。
  2. エディタで minion.conf ファイルを開きます。id 設定を目的のミニオン ID に変更します。例:
    id: postgres-database-1
  3. ミニオン ID を変更した後、Salt マスターがミニオン キーを受け入れる(または再受け入れする)必要があります。キーを設定する具体的な手順については、マスターでのミニオン キーの受け入れを参照してください。

top 状態ファイルのコピーと編集

このインストール タスクでは、Automation Config インストーラで提供されるオーケストレーション ファイルを Salt マスター ノードにコピーします。次に、RaaS、Redis データベース、PostgreSQL データベースの 3 台のノードを参照するようにファイルを編集します。

オーケストレーション構成ファイルをコピーして編集するには、次の手順に従います。

  1. Salt マスターで、sse-installer ディレクトリに移動します。
  2. 次のコマンドを使用して、sse_installer ディレクトリから Salt マスターの pillar_roots および file_roots にピラー ファイルおよび状態ファイルをコピーします。
    sudo mkdir /srv/salt
    sudo cp -r salt/sse /srv/salt/
    sudo mkdir /srv/pillar
    sudo cp -r pillar/sse /srv/pillar/
    sudo cp -r pillar/top.sls /srv/pillar/
    sudo cp -r salt/top.sls /srv/salt/
    重要:

    これらの手順で前提としている状況は、既存の Salt インストールがある場合などには、実際のディレクトリ構造に当てはまらない可能性があります。この手順では、以下を前提としています。

    • Salt マスターがデフォルトのディレクトリ構造を採用している。ディレクトリ構造を変更してある場合は、カスタムのディレクトリ構造に合わせて以下の手順に対し変更が必要になる可能性があります。
    • ピラーと構成状態のどちらのルートにも sse という名前のフォルダがない。このフォルダがある場合は、手動によるマージが必要になる可能性があります。
    • pillar と salt のどちらのディレクトリにも top.sls という名前のファイルがない。このファイルがある場合は、既存のファイルとの手動によるマージが必要になる可能性があります。
  3. /srv/pillar/ ディレクトリには、前の手順でインストール ファイルからコピーした top.sls という名前のファイルがあります。エディタでこのファイルを開きます。
  4. このファイルを編集して、PostgreSQL、Redis、RaaS、Salt マスターのミニオン ID(IP アドレスまたは DNS 名ではなく)のリストを定義します。以前の手順で記録した ID を使用します。

    例:

    {# Pillar Top File #}
    
    {# Define SSE Servers #}
    
    {% load_yaml as sse_servers %}
      - postgres-database-1
      - redis-database-1
      - saltstack-enterprise-api-server-1
      - saltmaster-1
    {% endload %}
    
    base:
    
    {# Assign Pillar Data to SSE Servers #}
    {% for server in sse_servers %}
      '{{ server }}':
        - sse
    {% endfor %}
  5. これで、手順 2 でコピーした top.sls という名前のファイルが /srv/salt/ ディレクトリに配置されました。このファイルをエディタで開き、内容が以下と一致していることを確認します。
    base:
    
      {# Target SSE Servers, according to Pillar data #}
      # SSE PostgreSQL Server
      'I@sse_pg_server:{{ grains.id }}':
        - sse.eapi_database
    
      # SSE Redis Server
      'I@sse_redis_server:{{ grains.id }}':
        - sse.eapi_cache
    
      # SSE eAPI Servers
      'I@sse_eapi_servers:{{ grains.id }}':
        - sse.eapi_service
    
      # SSE Salt Masters
      'I@sse_salt_masters:{{ grains.id }}':
        - sse.eapi_plugin
    

Automation Config 設定ピラー ファイルの編集

このインストール タスクでは、Automation Config 設定ピラー マッピング ファイルの 5 つのセクションを編集して、環境に適した値を指定します。これらの設定は、構成状態ファイルによって Automation Config 展開環境の展開と管理の際に使用されます。

Automation Config 設定状態ファイルをコピーおよび編集するには、次の手順に従います。

  1. Salt マスターで、/srv/pillar/sse/ ディレクトリに移動します。
  2. エディタで sse_settings.yaml ファイルを開きます。このファイルのセクション 1[] には、4 台のノードに対応する 4 つの変数があります。4 つの変数の値を、対応するノードのミニオン ID(IP アドレスまたは DNS 名ではなく)に変更します。以前の手順で記録したミニオン ID を使用します。

    例:

    # PostgreSQL Server (Single value)
    pg_server: postgres-database-1
    
    # Redis Server (Single value)
    redis_server: redis-database-1
    
    # SaltStack Enterprise Servers (List one or more)
    eapi_servers:
      - saltstack-enterprise-api-server-1
    
    # Salt Masters (List one or more)
    salt_masters:
      - saltmaster-1
    注: ほとんどのネットワーク構成では PostgreSQL と Redis のデータベースは 1 つのため、 pg_server 変数および redis_server 変数は単一の変数です。対照的に、RaaS ノードと Salt マスターは複数配置できるため、 eapi_servers 変数と salt-masters 変数はリスト形式になっています。
  3. このファイルのセクション 2[] で、PostgreSQL ノードのエンドポイントとポートを指定するように変数を編集します。
    • pg_endpoint - 値を PostgreSQL サーバの IP アドレスまたは DNS 名(ミニオン ID ではなく)に変更します。仮想環境の場合は、パブリック アドレスではなく内部アドレスを指定するように注意します。
    • pg_port - 標準の PostgreSQL ポートが提供されますが、必要に応じてオーバーライドできます。
    • pg_username および pg_password - API (RaaS) で PostgreSQL への認証に使用されるユーザーの認証情報を入力します。このユーザーは、構成オーケストレーションの highstate を実行すると作成されます。
    注: 一部のインストールでは、このインストール プロセスで管理されない別の PostgreSQL サーバ(またはクラスタ)が構成されている場合もあるため、この変数は pg_endpoint と指定されます。これに該当する場合は、アクションを除外します。この後、プロセスのノードへの highstate の適用の手順では、PostgreSQL サーバに highstate を適用しないでください。
  4. 前の手順を繰り返して、このファイルのセクション 3[] を編集します。ただし、ここでは、対応する変数が Redis ノードのエンドポイントとポートを指定するように編集します。
  5. このファイルのセクション 4[] で、RaaS ノードに関連する変数を編集します。
    • 新規インストールの場合は、eapi_username および eapi_password 変数のデフォルト値を変更しません[]。インストール プロセスでは、構成オーケストレーション中に、これらのデフォルトの認証情報によってデータベースが確立されます。これらの認証情報は、eAPI サービスを介して接続し、Automation Config でデフォルトのターゲットとジョブを確立するために必要です。デフォルトのパスワードは、後からインストール後の手順で変更します。
    • eapi_endpoint 変数については、値を RaaS ノードの IP アドレスまたは DNS(ミニオン ID ではなく)に変更します。
      注: 一部のインストールではロード バランサの背後にある複数の eAPI サーバをホストするため、この変数は eapi_endpoint と指定されます。
    • eapi_ssl_enabled 変数は、デフォルトで True に設定されています。True に設定すると、SSL が有効になります。これは、有効にしたままにしておくことを推奨します[]。SSL 検証は、インストーラでは必要とされませんが、通常、独自の認証局をホストしている環境ではセキュリティ要件とされています。
    • eapi_standalone 変数は、デフォルトで False に設定されています。単一ノードへのインストールのシナリオで、ピラー データが使用されている場合、この変数は構成状態の方向を示します。このシナリオでは、すべての IP 通信はループバック アドレスに送信されます。マルチ インストールのシナリオでは、この設定を False のままにします。
    • eapi_failover_master 変数は、デフォルトで False に設定されています。この変数は、Salt マスター(およびミニオン)がフェイルオーバー モードで動作している環境をサポートします。
    • eapi_key 変数は、Automation Config が PostgreSQL データベース内の暗号化されたデータの管理に使用する暗号化キーを定義します。このキーは、インストールごとに一意である必要があります。デフォルトは指定されていますが、エディタとは別のターミナルで次のコマンドを実行すると、カスタム キーを生成できます。
      openssl rand -hex 32
  6. このファイルのセクション 5[] で、変数を編集して一意のユーザー識別子を追加します。
    • customer_id 変数は、SaltStack 展開を一意に識別します。これは、PostgreSQL で raas_* (API (RaaS)) データベースのスキーマ名のサフィックスになります。デフォルトは指定されていますが、エディタとは別のターミナルで次のコマンドを実行すると、カスタム キーを生成できます。
      cat /proc/sys/kernel/random/uuid
    • cluster_id 変数は、Salt マスターのセットがアクティブまたはフェイルオーバー状態のマルチマスター モードで構成されている場合に、このセットに対して ID を定義します。この ID により、Automation Config 内で複数の Salt マスターにレポートしているミニオンが複数回レポートされることがなくなります。

ノードへの highstate の適用

  1. Salt マスターで Grain を同期して、各ミニオンにとって必要な Grain データが Salt マスターに含まれていることを確認します。この手順により、Automation Config が機能するためのピラー データが適切に生成されます。

    グレインを同期するコマンドでは、すべてのミニオンをターゲットにするか、ノード(Salt マスター自体を含む)の特定のミニオンの ID を引用符で囲んだリストを渡すことができます。例:

    すべてのミニオンをターゲットにする場合

    sudo salt \* saltutil.refresh_grains

    ミニオンのリストをターゲットにする場合

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_grains
  2. 更新し、各ミニオンが sse_settings.yaml ファイルで定義されているピラー データを受信し、想定どおりに表示されることを確認します。

    ピラー データを更新するコマンドでは、すべてのミニオンをターゲットにするか、ノード(Salt マスター自体を含む)の特定のミニオンの ID を引用符で囲んだリストを渡すことができます。例:

    すべてのミニオンをターゲットにする場合

    sudo salt \* saltutil.refresh_pillar

    ミニオンのリストをターゲットにする場合

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_pillar
  3. ピラーの戻りデータが正しいことを確認します。
    sudo salt \* pillar.items

    Automation Config に関連するピラー データが表示されることを確認します。

    注:

    また、特定のミニオンのピラー データをターゲットにして、そのピラー データが更新されたことを確認することもできます。

  4. オーケストレーション highstate を PostgreSQL サーバに適用するコマンドを実行します。以前の手順で記録した PostgreSQL サーバのミニオン ID を使用します。

    例:

    sudo salt postgres-database-1 state.highstate
  5. 次のサーバのそれぞれについて、サーバごとにミニオン ID を置き換えながら前の手順を繰り返します。
    • Redis ノード
    • RaaS ノード
    • Salt マスター ノード
    注:

    Salt マスターに highstate を最初に適用するときに、Authenticationerroroccurred というエラー メッセージが表示されることがあります。このエラーは Salt マスターが RaaS ノードに対してまだ認証されていないために表示されますが、マスター プラグインのインストール状態によって Salt マスター サービスが再起動され、問題は自動的に解決されます。

highstate の実行中に他のエラーが発生した場合は、トラブルシューティングページを参照してください。