Saltstack-overview

提供:Dev Guides
移動先:案内検索

SaltStack-概要

この章では、SaltStackの基本を学びます。 SaltStackのリモート実行機能により、管理者は柔軟なターゲティングシステムと並行して、さまざまなマシンでコマンドを実行できます。 ソルト構成管理は、マスターコンポーネントモデルを確立し、インフラストラクチャコンポーネントを特定のポリシーに迅速かつ非常に簡単に、柔軟かつ安全に対応させます。

SaltStackとは何ですか?

Saltは非常に強力な自動化フレームワークです。 saltアーキテクチャは、コマンドをリモートで実行するという考え方に基づいています。 すべてのネットワークは、リモート実行のいくつかの側面を中心に設計されています。 これは、*リモートWebサーバー*に静的Webページを表示するように要求するのと同じくらい簡単な場合もあれば、シェルセッションを使用してリモートサーバーに対してコマンドを対話的に発行するような複雑な場合もあります。 Saltは、より複雑なタイプのリモート実行の1つの例です。

Saltは、ユーザーが明示的に複数のマシンを直接ターゲットにしてコマンドを発行できるように設計されています。 ソルトは、1つ以上の*ミニオン*を制御するマスターのアイデアに基づいています。 コマンドは通常、マスターからミニオンのターゲットグループに発行され、コマンドで指定されたタスクを実行し、結果のデータをマスターに返します。 マスターとミニオン間の通信は、* ZeroMQメッセージバス*を介して行われます。

SaltStackモジュールは、サポートされているミニオンオペレーティングシステムと通信します。 Salt Master はデフォルトでLinux上で実行されますが、どのオペレーティングシステムでもミニオンにすることができ、現在はWindows、VMware vSphere、およびBSD Unixバリアントが十分にサポートされています。 ソルトマスターとミニオンはキーを使用して通信します。 ミニオンが初めてマスターに接続すると、マスターにキーが自動的に保存されます。 また、SaltStackは、「エージェントレス」システム管理を提供する Salt SSH も提供しています。

SaltStackの必要性

SaltStackは、速度とスケールのために構築されています。 これが、LinkedIn、WikiMedia、Googleで数万台のサーバーを備えた大規模なインフラストラクチャの管理に使用されている理由です。

複数のサーバーがあり、それらのサーバーに対して何かをしたい場合を想像してください。 それぞれにログインし、それらを一度に1つずつ実行する必要があります。その後、ソフトウェアをインストールし、特定の基準に基づいてそのソフトウェアを構成するなどの複雑な操作を実行する場合があります。

10台、または場合によっては100台のサーバーがあるとします。 各サーバーに個別に1つずつログインし、それらの100台のマシンで同じコマンドを発行してから、100台すべてのマシンで構成ファイルを編集するのは非常に退屈な作業です。 これらの問題を克服するには、1つのコマンドを入力するだけで、すべてのサーバーを一度に更新することができます。 SaltStackは、このようなすべての問題に対する正確なソリューションを提供します。

SaltStackの機能

SaltStackは、オープンソースの構成管理ソフトウェアおよびリモート実行エンジンです。 Saltはコマンドラインツールです。 Pythonで記述されている間、SaltStack構成管理は言語に依存せず、シンプルです。 Saltプラットフォームでは、プッシュモデルを使用してSSHプロトコル経由でコマンドを実行します。 デフォルトの構成システムは、 YAML および* Jinjaテンプレート*です。 Saltは主に PuppetChef および Ansible と競合しています。

他の競合ツールと比較した場合、Saltは多くの機能を提供します。 これらの重要な機能の一部を以下にリストします。

  • フォールトトレランス-使用可能なすべてのマスターのYAMLリストとしてマスター構成パラメーターを設定することにより、ソルトミニオンは一度に複数のマスターに接続できます。 マスターは、Saltインフラストラクチャにコマンドを送信できます。
  • 柔軟-ソルトの管理アプローチ全体は非常に柔軟です。 同じ環境で、エージェントとサーバー、エージェントのみ、サーバーのみ、または上記のすべてなどの最も一般的なシステム管理モデルに従うように実装できます。
  • スケーラブルな構成管理-SaltStackは、マスターごとに10,000個のミニオンを処理するように設計されています。
  • 並列実行モデル-Saltは、コマンドがリモートシステムを並列に実行できるようにします。
  • Python API -Saltはシンプルなプログラミングインターフェースを提供し、モジュール式で簡単に拡張できるように設計されており、多様なアプリケーションに簡単に成形できます。
  • セットアップが簡単-Saltはセットアップが簡単で、任意の数のサーバーの多様な要件を管理できる単一のリモート実行アーキテクチャを提供します。
  • Language Agnostic -ソルトステート構成ファイル、テンプレートエンジン、またはファイルタイプは、あらゆるタイプの言語をサポートします。

SaltStackの利点

機能が豊富なシステムと同様にシンプルであるため、塩は多くの利点を提供し、それらは以下のように要約することができます-

  • 堅牢-Saltは強力で堅牢な構成管理フレームワークであり、数万のシステムで動作します。
  • 認証-Saltは、認証用のシンプルなSSHキーペアを管理します。
  • Secure -Saltは、暗号化されたプロトコルを使用して安全なデータを管理します。
  • 高速-Saltは、リモート実行エンジンの基盤を提供する非常に高速で軽量な通信バスです。
  • 仮想マシンの自動化-Salt Virt Cloud Controllerの機能は自動化に使用されます。
  • コードではなくデータとしてのインフラストラクチャ-ソルトは、シンプルな展開、モデル駆動型の構成管理、およびコマンド実行フレームワークを提供します。

ZeroMQの概要

*Salt* は *ZeroMQ* ライブラリに基づいており、埋め込み可能なネットワーキングライブラリです。 軽量で高速なメッセージングライブラリです。 基本的な実装は *C/C ++* で行われ、 *Java* や *.Net* などのいくつかの言語のネイティブ実装が利用可能です。

ZeroMQは、ブローカーなしのピアピアメッセージ処理です。 ZeroMQを使用すると、複雑な通信システムを簡単に設計できます。

ZeroMQには次の5つの基本パターンがあります-

  • 同期要求/応答-要求を送信し、送信された各要求に対する後続の応答を受信するために使用されます。
  • 非同期リクエスト/レスポンス-リクエスターは、リクエストメッセージを送信して会話を開始し、レスポンスメッセージを待ちます。 プロバイダーは、着信要求メッセージを待機し、応答メッセージで応答します。
  • パブリッシュ/サブスクライブ-単一のプロセスからデータを配布するために使用されます(例: パブリッシャー)から複数の受信者(例: サブスクライバー)。
  • プッシュ/プル-接続されたノードにデータを配布するために使用されます。
  • Exclusive Pair -2つのピアを接続してペアを形成するために使用されます。

ZeroMQは、クラスター、クラウド、その他のマルチシステム環境間でメッセージを交換するための非常に柔軟なネットワークツールです。 ZeroMQは、SaltStackで提供される*デフォルトのトランスポートライブラリ*です。