Automation Config のインストールでは、Automation Config インストーラで提供されているオーケストレーション highstate を実行します。highstate は Salt マスターで実行され、マルチノード環境を設定します。これにより、PostgreSQL、Redis、および RaaS ノードをホストする他の 3 台のノードに、中核となる 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 名が正しいことを確認します。
このデータは、参照用としてアクセスしやすい場所に保存してください。オーケストレーションを構成するときに、このデータを構成ファイルのいくつかの設定や変数に入力する必要があります。そのため、インストールが終わるまでこの記録を手元に置いておくと便利です。
仮想環境の場合は、パブリック アドレスではなく内部アドレスを指定するように注意します。
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 を宣言するには、次の手順に従います。
- ミニオンのターミナルで、ミニオンの
minion.conf
ファイルを含むディレクトリに移動します。デフォルトでは、ディレクトリの場所はetc/salt/minion.d
です。 - エディタで
minion.conf
ファイルを開きます。id
設定を目的のミニオン ID に変更します。例:id: postgres-database-1
- ミニオン ID を変更した後、Salt マスターがミニオン キーを受け入れる(または再受け入れする)必要があります。キーを設定する具体的な手順については、マスターでのミニオン キーの受け入れを参照してください。
top 状態ファイルのコピーと編集
このインストール タスクでは、Automation Config インストーラで提供されるオーケストレーション ファイルを Salt マスター ノードにコピーします。次に、RaaS、Redis データベース、PostgreSQL データベースの 3 台のノードを参照するようにファイルを編集します。
オーケストレーション構成ファイルをコピーして編集するには、次の手順に従います。
- Salt マスターで、
sse-installer
ディレクトリに移動します。 - 次のコマンドを使用して、
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
という名前のファイルがない。このファイルがある場合は、既存のファイルとの手動によるマージが必要になる可能性があります。
/srv/pillar/
ディレクトリには、前の手順でインストール ファイルからコピーしたtop.sls
という名前のファイルがあります。エディタでこのファイルを開きます。- このファイルを編集して、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 %}
- これで、手順 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 設定状態ファイルをコピーおよび編集するには、次の手順に従います。
- Salt マスターで、
/srv/pillar/sse/
ディレクトリに移動します。 - エディタで
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
変数はリスト形式になっています。 - このファイルのセクション 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 を適用しないでください。 -
- 前の手順を繰り返して、このファイルのセクション 3[] を編集します。ただし、ここでは、対応する変数が Redis ノードのエンドポイントとポートを指定するように編集します。
- このファイルのセクション 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
- 新規インストールの場合は、
- このファイルのセクション 5[] で、変数を編集して一意のユーザー識別子を追加します。
customer_id
変数は、SaltStack 展開を一意に識別します。これは、PostgreSQL でraas_*
(API (RaaS)) データベースのスキーマ名のサフィックスになります。デフォルトは指定されていますが、エディタとは別のターミナルで次のコマンドを実行すると、カスタム キーを生成できます。cat /proc/sys/kernel/random/uuid
cluster_id
変数は、Salt マスターのセットがアクティブまたはフェイルオーバー状態のマルチマスター モードで構成されている場合に、このセットに対して ID を定義します。この ID により、Automation Config 内で複数の Salt マスターにレポートしているミニオンが複数回レポートされることがなくなります。
ノードへの highstate の適用
- 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
- 更新し、各ミニオンが
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
- ピラーの戻りデータが正しいことを確認します。
sudo salt \* pillar.items
Automation Config に関連するピラー データが表示されることを確認します。
注:また、特定のミニオンのピラー データをターゲットにして、そのピラー データが更新されたことを確認することもできます。
- オーケストレーション highstate を PostgreSQL サーバに適用するコマンドを実行します。以前の手順で記録した PostgreSQL サーバのミニオン ID を使用します。
例:
sudo salt postgres-database-1 state.highstate
- 次のサーバのそれぞれについて、サーバごとにミニオン ID を置き換えながら前の手順を繰り返します。
- Redis ノード
- RaaS ノード
- Salt マスター ノード
注:Salt マスターに highstate を最初に適用するときに、
Authenticationerroroccurred
というエラー メッセージが表示されることがあります。このエラーは Salt マスターが RaaS ノードに対してまだ認証されていないために表示されますが、マスター プラグインのインストール状態によって Salt マスター サービスが再起動され、問題は自動的に解決されます。
highstate の実行中に他のエラーが発生した場合は、トラブルシューティングページを参照してください。