Ubuntu 14.04でSalt MasterおよびMinionサーバーをインストールおよび構成する方法

前書き

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

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

前提条件

開始するには、少なくとも2つのUbuntu 14.04サーバーインスタンスが必要です。 これらには、sudo特権で構成された非rootユーザーが必要です。 Ubuntu 14.04 initial server setup guideをフォローすることで、これらのユーザーを作成および構成する方法を学ぶことができます。

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

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

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

  • Ubuntu SaltStack PPA:Ubuntuネイティブパッケージ管理ツールを使用して、必要なソフトウェアをインストールおよび更新します。 これが最も簡単なインストール方法ですが、この記事の執筆時点のように、パッケージはかなり古くなっている可能性があります。

  • Salt-Bootstrap:このブートストラップスクリプトは、Saltをインストールおよび構成するためのより普遍的な方法を提供しようとします。 利用可能なネイティブソフトウェアツールの使用を試みることができます。つまり、上記のPPAからインストールしようとする可能性があります。 また、Saltの開発バージョンに簡単にアクセスできます。

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

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

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

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

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

sudo add-apt-repository ppa:saltstack/salt

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

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

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

この時点で、Salt Masterのインストールは完了です。 initial master configuration sectionにスキップして、新しいサービスを起動して実行します。

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

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

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

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

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

less ~/install_salt.sh

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

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

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

sudo sh install_salt.sh -P -M

この時点で、Salt Masterのインストールは完了です。 initial master configuration sectionにスキップして、新しいサービスを起動して実行します。

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

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

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

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

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

less ~/install_salt.sh

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

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

sudo sh install_salt.sh -P -M git develop

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

初期マスター構成

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

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

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

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

ソルトマスター構成の変更

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

sudo nano /etc/salt/master

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

/etc/salt/master

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

Note

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

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

/etc/salt/master

pillar_roots:
  base:
    - /srv/pillar

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

Salt Minion構成の変更

また、このマシンにソルトミニオンデーモンをインストールしたため、他のインフラストラクチャポリシーと一致させることができます。 次に、sudo特権でSaltミニオン構成を開きます。

sudo nano /etc/salt/minion

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

/etc/salt/minion

master: 127.0.0.1

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

プロセスを再起動する

次に、新しい構成を使用するために、Salt masterデーモンとminionデーモンの両方を再起動する必要があります。

sudo restart salt-master
sudo restart salt-minion

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

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

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

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

sudo salt-key --list all

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

OutputAccepted Keys:
Denied Keys:
Unaccepted Keys:
saltmaster
Rejected Keys:

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

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

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

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

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

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

sudo salt-key -a saltmaster

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

sudo salt-key --list all
OutputAccepted Keys:
saltmaster
Denied Keys:
Unaccepted Keys:
Rejected Keys:

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

sudo salt '*' test.ping

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

Outputsaltmaster:
    True

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

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

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

繰り返しますが、必要なソフトウェアをインストールする方法は複数ありますが、you should match the method used for the master serverです。 これにより、ソルトマスターとミニオンのバージョンが一致しないことが保証されます。 マスターサーバーよりも最新のソルトミニオンは、予期しない動作をする場合があります。

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

公式PPAからステーブルマスターをインストールする

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

sudo add-apt-repository ppa:saltstack/salt

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

sudo apt-get update
sudo apt-get install salt-minion

これで、Salt minionがインストールされました。 configuring your minionのセクションに進んでください。

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

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

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

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

sudo sh install_salt.sh -P

これで、Salt minionがインストールされました。 configuring your minionのセクションに進んでください。

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

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

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

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

sudo sh install_salt.sh -P git develop

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

Minionを構成する

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

ソルトマスターの公開キーフィンガープリントを取得する

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

Saltマスターサーバーで、次を入力します。

sudo salt-key -F master

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

OutputLocal 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構成で使用します。

Minion構成の変更

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

sudo nano /etc/salt/minion

Saltマスターを見つけることができる場所を指定する必要があります。 これは、解決可能な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デーモンを再起動して、新しい構成の変更を実装します。

sudo restart salt-minion

新しいミニオンは、指定された住所のソルトマスターサービスに連絡する必要があります。 次に、マスターが受け入れるためのキーを送信します。 キーを安全に検証するには、新しいミニオンサーバーでキーフィンガープリントを確認する必要があります。

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

sudo salt-call key.finger --local

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

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

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

ソルトマスターでミニオンキーを受け入れます

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

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

sudo salt-key --list all

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

OutputAccepted Keys:
saltmaster
Denied Keys:
Unaccepted Keys:
saltminion
Rejected Keys:

新しいキーの指紋を確認します。 「未承認のキー」セクションに表示されるミニオンIDで、以下の強調表示された部分を変更します。

sudo salt-key -f saltminion

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

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

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

sudo salt-key -a saltminion

これで、キーが[Accepted Keys]セクションに追加されます。

sudo salt-key --list all
OutputAccepted Keys:
saltmaster
saltminion
Denied Keys:
Unaccepted Keys:
Rejected Keys:

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

sudo salt '*' test.ping

設定した両方のミニオンデーモンから返事を受け取るはずです:

Outputsaltminion:
    True
saltmaster:
    True

結論

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