序章

SaltStackは、強力で柔軟性があり、パフォーマンスの高い構成管理およびリモート実行システムです。 手動のメンテナンス手順を最小限に抑えながら、一元化された場所からインフラストラクチャを管理するために使用できます。 SaltStackに関連するいくつかの用語とツールの詳細については、このガイドをご覧ください。

この記事では、インフラストラクチャを管理するためにSaltマスターサーバーをセットアップすることに焦点を当てます。 また、Saltで管理するために、Saltminionデーモンを他のコンピューターにインストールする方法についても説明します。 これらの手順を示すために、2台のUbuntu14.04サーバーを使用します。

前提条件

開始するには、少なくとも2つのUbuntu14.04サーバーインスタンスが必要です。 これらには、sudo権限で構成された非rootユーザーが必要です。 Ubuntu 14.04初期サーバーセットアップガイドに従って、これらのユーザーを作成および構成する方法を学ぶことができます。

開始する準備ができたら、sudoユーザーでSaltマスターとして使用するサーバーにログインします。 最初にこのマシンを構成します。

マスターデーモンをインストールします

Saltマスターデーモンは、Ubuntu14.04にさまざまな方法でインストールできます。 以下は、各方法の長所と短所の簡単な要約です。

  • Ubuntu SaltStack PPA :Ubuntuネイティブパッケージ管理ツールを使用して、必要なソフトウェアをインストールおよび更新します。 これはインストールの最も簡単な方法ですが、この記事の執筆時点の場合と同様に、パッケージは大幅に古くなっている可能性があります。
  • Salt-Bootstrap :このブートストラップスクリプトは、Saltをインストールおよび構成するためのより普遍的な方法を提供しようとします。 利用可能なネイティブソフトウェアツールの使用を試みることができます。つまり、上記のPPAからのインストールを試みる可能性があります。 また、Saltの開発バージョンに簡単にアクセスできます。

以下では、UbuntuPPA方式を使用してインストールする方法の概要を説明します。 また、salt-bootstrapスクリプトを使用して、Saltマスターの安定版と開発版の両方をインストールする方法についても説明します。

どのオプションがあなたのニーズに最も適しているかを決めるのはあなた次第です。 問題が発生した場合は、開発バージョンで利用可能なバグ修正がある可能性があります。 ただし、新しくリリースされたバグに遭遇する可能性もあります。

公式PPAから安定バージョンをインストールします

Ubuntu PPAからのインストールは、最も簡単なインストール方法です。

開始するには、マスターとして使用するサーバーにSaltStackPPAを追加する必要があります。 これを行うには、次のように入力します。

  1. sudo add-apt-repository ppa:saltstack/salt

PPAの追加を確認すると、システムに追加されます。 内で利用可能な新しいパッケージにインデックスを付けるには、ローカルパッケージインデックスを更新する必要があります。 その後、関連するソフトウェアをインストールできます。

  1. sudo apt-get update
  2. sudo apt-get install salt-master salt-minion salt-ssh salt-cloud salt-doc

上記のコマンドでは、Saltマスターデーモンとミニオンデーモンの両方をインストールしました。 これにより、Saltを使用してマスターサーバーを制御することもできます。 また、salt-sshsalt-cloudをインストールしました。これにより、リソースへの接続と制御の方法がより柔軟になります。 ドキュメントパッケージも含まれています。

この時点で、Saltマスターのインストールは完了です。 初期マスター構成セクションにスキップして、新しいサービスを起動して実行します。

Salt-Bootstrapを使用して安定したバージョンをインストールする

PPAを直接使用する代わりに、salt-bootstrapスクリプトを使用して安定バージョンをインストールすることもできます。 これは、SaltStackWebサイトからダウンロードできます。 上記の方法よりも安定したシステムをインストールするこの方法を使用することを選択できる理由の1つは、pipパッケージマネージャーから依存関係の一部を取得することです。 これにより、一部のSalt依存関係の最新バージョンが提供される場合があります。

開始するには、ホームディレクトリまたは書き込み権限のある別の場所に移動します。 curlを使用して、ブートストラップスクリプトをダウンロードできます。 salt-bootstrap GitHubページにある手順に従い、わかりやすくするために選択した出力名を使用します。

  1. cd ~
  2. curl -L https://bootstrap.saltstack.com -o install_salt.sh

この時点で、スクリプトを見て、承認していないことを実行していないことを確認します。

  1. less ~/install_salt.sh

salt-bootstrapスクリプトはSaltStackチームによって管理されていますが、実行する前に必ず外部スクリプトの内容を確認する必要があります。

実行されるアクションに満足したら、スクリプトをshに渡して実行します。 スクリプトが必要に応じて依存関係ソースとしてpipを使用できるように、-Pフラグを使用します。 このフラグがないと、インストールが失敗する可能性があります。 また、Saltマスターデーモンをインストールするために、-Mフラグを含める必要があります。 すべてのSaltヘルパーユーティリティが自動的に含まれます。

必要な完全なコマンドは次のとおりです。

  1. sudo sh install_salt.sh -P -M

この時点で、Saltマスターのインストールは完了です。 初期マスター構成セクションにスキップして、新しいサービスを起動して実行します。

Salt-Bootstrapを使用して開発バージョンをインストールする

salt-bootstrapスクリプトを使用して、gitを使用してSaltの開発バージョンをインストールすることもできます。 これは、新しい機能にアクセスしたり、さらに重要なことに、PPAバージョンのソフトウェアでは利用できない可能性のある最新のバグ修正にアクセスしたりするのに役立ちます。

必要なスクリプトは、上記で使用したものと同じsalt-bootstrapスクリプトです。 使用するオプションのみが異なります。 これを念頭に置いて、スクリプトをまだ持っていない場合は、ホームディレクトリにダウンロードしてください。

  1. cd ~
  2. curl -L https://bootstrap.saltstack.com -o install_salt.sh

繰り返しになりますが、スクリプトを見て、実行する操作に問題がないことを確認してください。

  1. less ~/install_salt.sh

満足したら、スクリプトをshに渡して実行できます。 必要に応じてpipとの依存関係を取得するようにスクリプトに指示するために、-Pフラグを含めます。 -Mフラグは、Saltマスターをインストールすることを指定するために含まれています。 コマンドをgit developで終了して、SaltStackGitHubリポジトリを使用してUbuntuPPAの代わりに最新の開発バージョンをインストールすることをスクリプトに通知します。

必要な完全なコマンドは次のとおりです。

  1. sudo sh install_salt.sh -P -M git develop

この時点で、Saltマスターのインストールは完了です。 次に、新しいサービスを起動して実行するためにマスターを構成します。

初期マスター構成

次に、Saltマスターを構成する必要があります。

ソルトディレクトリ構造を作成する

まず、Saltマスターがさまざまなファイルを検索する構成管理ディレクトリ構造を作成します。 これらはすべて、デフォルトで/srvディレクトリの下にあります。 開始するには、/srv/salt/srv/pillarが必要です。 次のように入力して、今すぐ作成します。

  1. sudo mkdir -p /srv/{salt,pillar}

ソルトマスター構成を変更する

次に、Saltマスター構成ファイルを調整します。 テキストエディタでsudo権限でファイルを開きます。

  1. sudo nano /etc/salt/master

最初に行うことは、file_roots辞書を設定することです。 これは基本的に、Saltマスターが構成管理命令を探す場所を指定します。 baseは、デフォルトの環境を指定します。 以前に作成した2つのディレクトリがこの目的で使用されます。 /srv/saltは管理者が作成した命令に使用され、/srv/formulasは外部ソースからダウンロードされた事前にパッケージ化された構成用に確保されます。

/ etc / salt / master
file_roots:
  base:
    - /srv/salt
    - /srv/formulas

ノート

指定された形式を正確に複製することが重要です。 SaltはYAMLスタイルの構成ファイルを使用します。 これらは、デーモンが値を正しく解釈するために、間隔とインデントに厳密な注意を払う必要があります。

次に、Saltpillar構成のルートディレクトリを設定します。 これは上記の構成と非常によく似ており、作成した3番目のディレクトリを使用します。

/ etc / salt / master
pillar_roots:
  base:
    - /srv/pillar

現時点でマスター用に構成する必要があるのはこれだけです。 終了したら、ファイルを保存して閉じます。

ソルトミニオン構成を変更する

また、このマシンにSalt minionデーモンをインストールして、他のインフラストラクチャポリシーに沿った状態に保つことができるようにしました。 次に、sudo権限でSaltminion構成を開きます。

  1. sudo nano /etc/salt/minion

行う必要がある唯一の変更は、このミニオンが接続するマスターを指定することです。 この場合、ミニオンは同じマシンで実行されているマスタープロセスに接続する必要があります。 ミニオンが正しく接続できるように、masterキーをローカルループバックアドレス127.0.0.1と同じに設定します。

/ etc / salt / minion
master: 127.0.0.1

終了したら、ファイルを保存して閉じます。

プロセスを再開します

ここで、新しい構成を使用するために、Saltマスターデーモンとミニオンデーモンの両方を再起動する必要があります。

  1. sudo restart salt-master
  2. sudo restart salt-minion

概説した構成の変更を考慮して、両方のデーモンが再起動します。

ミニオンキーを受け入れる

再起動後、Saltminionデーモンは自動的にSaltマスターにその資格情報を接続しました。 管理者は、通信を許可するために、ミニオンのキーを確認して受け入れる必要があります。

ソルトマスターが知っているすべてのキーをリストすることから始めます。

  1. sudo salt-key --list all

このようなものが表示されるはずです。 以下のsaltmasterは、システムのソルトミニオンIDと一致する必要があります。 これは通常、サーバーのホスト名です。

Output
Accepted Keys: Denied Keys: Unaccepted Keys: saltmaster Rejected Keys:

ご覧のとおり、ソルトミニオンはマスターにキーを送信しましたが、まだ受け入れられていません。 セキュリティ上の理由から、キーを受け入れる前に、2つのコマンドを実行します。

これの出力を確認する必要があります(これにより、Salt minionが生成したキーのフィンガープリントがわかります):

  1. sudo salt-call key.finger --local
Output
local: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

ここで見つかったフィンガープリント(Saltマスターが受け入れるように求められているキーのフィンガープリント)と一致します。 ここでミニオンIDを置き換えます。

  1. sudo salt-key -f saltmaster
Output
Unaccepted Keys: saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

これらの値が同じであることを確認したら、次のように入力してキーを受け入れることができます。

  1. sudo salt-key -a saltmaster

キーを受け入れると、キーが「受け入れられたキー」セクションに移動したことがわかります。

  1. sudo salt-key --list all
Output
Accepted Keys: saltmaster Denied Keys: Unaccepted Keys: Rejected Keys:

これで、次のように入力して、Saltマスタープロセスとミニオンプロセスが正しく通信していることをテストできます。

  1. sudo salt '*' test.ping

ヘルスチェックが成功したことを示すメッセージが返されます。

Output
saltmaster: True

これで、Saltマスターサーバーが構成されました。 追加のSaltminionサーバーをセットアップする方法のデモンストレーションに進むことができます。

別のミニオンをインストールする

これで、Saltマスターサーバーがスムーズに稼働するようになりました。これで、新しいサーバーをミニオンとしてSaltの制御下に置く方法を示すことができます。

繰り返しになりますが、必要なソフトウェアをインストールする方法は複数ありますが、マスターサーバーで使用されている方法と一致する必要があります。 これにより、Saltマスターとミニオンの間にバージョンの不一致がなくなります。 マスターサーバーよりも最新のソルトミニオンは、予測できない動作を示す可能性があります。

準備ができたら、sudoユーザーで2番目のサーバーにログインします。

公式PPAからStableMasterをインストールします

SaltStack PPAからSaltマスターサーバーをインストールした場合は、Ubuntuミニオンサーバーに同じPPAを追加できます。

  1. sudo add-apt-repository ppa:saltstack/salt

今回は、salt-minion実行可能ファイルをインストールするだけです。 PPAを追加した後、ローカルパッケージインデックスを更新し、次のように入力してソフトウェアをインストールします。

  1. sudo apt-get update
  2. sudo apt-get install salt-minion

これで、Saltminionがインストールされます。 ミニオンの設定のセクションに進んでください。

Salt-Bootstrapを使用して安定したバージョンをインストールする

salt-bootstrapを使用して安定版をインストールした場合は、同じスクリプトをミニオンマシンにダウンロードできます。

  1. cd ~
  2. curl -L https://bootstrap.saltstack.com -o install_salt.sh

ソルトマスターで行ったのとほぼ同じ方法でスクリプトを呼び出します。 唯一の違いは、マスターツールとデーモンをインストールする必要がないため、-Mフラグを省略していることです。

  1. sudo sh install_salt.sh -P

これで、Saltminionがインストールされます。 ミニオンの設定のセクションに進んでください。

Salt-Bootstrapを使用して開発バージョンをインストールする

salt-bootstrapを使用して現在の開発バージョンをSaltマスターにインストールした場合は、同じスクリプトを使用してコンパニオンミニオンプロセスをインストールできます。 次のように入力して、ミニオンにダウンロードします。

  1. cd ~
  2. curl -L https://bootstrap.saltstack.com -o install_salt.sh

ミニオンをインストールするために必要なコマンドは、マスターで使用したものとほぼ同じです。 唯一の違いは、Saltマスターツールとデーモンが必要ないことを示すために-Mフラグを省略していることです。

  1. sudo sh install_salt.sh -P git develop

終了したら、先に進んでミニオンインスタンスを構成します。

ミニオンを構成する

ミニオンがインストールされたので、先に進んで、Saltマスターと通信するようにミニオンを構成できます。

ソルトマスター公開鍵指紋を取得する

始める前に、Saltマスターのキーフィンガープリントを取得する必要があります。 これをミニオン構成に追加して、セキュリティを強化できます。

Saltマスターサーバーで、次のように入力します。

  1. sudo salt-key -F master

出力は次のようになります。

Output
Local Keys: master.pem: 12:db:25:3d:7f:00:a3:ed:20:55:94:ca:18:f8:67:97 master.pub: 7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92 Accepted Keys: saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

「ローカルキー」セクションの下にあるmaster.pubキーの値は、探しているフィンガープリントです。 この値をコピーして、Minion構成で使用します。

ミニオン構成を変更する

新しいSaltミニオンに戻り、sudo権限でミニオン構成ファイルを開きます。

  1. sudo nano /etc/salt/minion

ソルトマスターを見つけることができる場所を指定する必要があります。 これは、解決可能なDNSドメイン名またはIPアドレスのいずれかです。

/ etc / salt / minion
master: ip_of_salt_master

次に、master_fingerオプションを、少し前にソルトマスターからコピーしたフィンガープリント値に設定します。

/ etc / salt / minion
master_finger: '7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92'

終了したら、ファイルを保存して閉じます。

次に、Salt minionデーモンを再起動して、新しい構成変更を実装します。

  1. sudo restart salt-minion

新しいミニオンは、提供されたアドレスのソルトマスターサービスに連絡する必要があります。 次に、マスターが受け入れるためのキーを送信します。 キーを安全に確認するには、新しいミニオンサーバーでキーの指紋を確認する必要があります。

これを行うには、次のように入力します。

  1. sudo salt-call key.finger --local

次のような出力が表示されます。

Output
local: 32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be

マスターサーバーが受信したキーフィンガープリントがこの値と一致することを確認する必要があります。

ソルトマスターのミニオンキーを受け入れる

Saltマスターサーバーに戻り、キーを受け入れる必要があります。

まず、マスターで待機している受け入れられないキーがあることを確認します。

  1. sudo salt-key --list all

新しいミニオンに関連付けられている「UnacceptedKeys」セクションに新しいキーが表示されます。

Output
Accepted Keys: saltmaster Denied Keys: Unaccepted Keys: saltminion Rejected Keys:

新しいキーのフィンガープリントを確認します。 以下の強調表示された部分を、「受け入れられないキー」セクションに表示されるミニオンIDで変更します。

  1. sudo salt-key -f saltminion

出力は次のようになります。

Output
Unaccepted Keys: saltminion: 32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be

これがsalt-callコマンドを発行したときにミニオンから受け取った値と一致する場合は、次のように入力してキーを安全に受け入れることができます。

  1. sudo salt-key -a saltminion

これで、キーが「承認されたキー」セクションに追加されます。

  1. sudo salt-key --list all
Output
Accepted Keys: saltmaster saltminion Denied Keys: Unaccepted Keys: Rejected Keys:

次のように入力して、新しいミニオンにコマンドを送信できることをテストします。

  1. sudo salt '*' test.ping

構成した両方のミニオンデーモンから返信が返ってきます。

Output
saltminion: True saltmaster: True

結論

これで、インフラストラクチャを制御するように構成されたSaltマスターサーバーができました。 また、新しいミニオンサーバーをセットアップするプロセスについても説明しました。 追加のソルトミニオンについても、これと同じ手順に従うことができます。 これらは、ソルト管理用の新しいインフラストラクチャをセットアップするために必要な基本的なスキルです。