what-is-saltstack

SaltStack とは?

SaltStack とは?

SaltStack/Saltは、システム管理者がサーバーのプロビジョニングおよび管理タスクを自動化するための構成管理(Confuguration Management、CM)とオーケストレーションのツールです。CMの分野では長い間 Puppet と Chef が主流であり、2011年にCMセグメントとしてリリースされた SaltStack は、比較的新しい部類になります。

CMの分野への参入が遅れたことで、データ収集の遅さやスケーラビリティ制限など、他のCMツールがかかえる課題への対策を組み込むことができ、その点が有利に作用しました。そのため、SaltStack は、Puppet や Chefのような非常に豊富な機能を備えたツールでもなく、Ansible のように簡単なソリューションとして宣伝されているわけでもないのに、CM分野で大変注目されています。Salt の特長的機能は、スケーラビリティの高いアーキテクチャ、高速なデータ収集、信頼性の高いパフォーマンス、パワフルなオーケストレーションなどです。

SaltStack

SaltStack は、Thomas S. Hatch 氏によって作成された Python ベースのCMツールです。Saltは、高速データ接続のために、ZeroMQ メッセージングシステムを使います。Puppet や Chef などのCMツールはデータ処理が遅いですが、ZeroMQ メッセージングシステムのマルチスレッドを利用することで何千ものタスクを同時に実行することができます。

Salt のアーキテクチャ

Salt のマスター・スレーブ・アーキテクチャで、プッシュ・システムとプル・システムの両方が可能になります。中央リポジトリからコードをプルしてリモートデバイスで使うこともできますし、エージェントデバイスが定期的にサーバーに接続してインストラクションを要求することもできます。

Salt アーキテクチャの重要なコンポーネントを以下にリストします。

  • Salt Master: エンドポイント上にインストールされた minions として知られるエージェントとコミュニケートするサーバー。
  • Minions: minions は、コマンドを実行して情報をSalt Master に報告するために、すべての管理対象ノードにインストールされるオプションの Salt エージェントです。
  • Grains: minions は、ターゲットデバイスに関する情報を grains という形式で受け取ります。grain インタフェースは、OS、メモリ、ドメイン名、カーネル、IPアドレスなどのシステム情報を提供します。
  • States: States は、minion 構成を格納するための YAML ファイルです。
  • Pillars: pillarsは、構成の詳細を格納するファイルです。pillarsは YAML、JSON、その他の形式をサポートしています。
  • Salt Reactors: Salt reactors はイベントを検出するコンポーネントです。

Salt エンジンは、minions がマスターに接続し、通信するためのセキュアな双方向チャネルを生成します。minions は、暗号ハッシュと公開鍵認証を使用してマスターに接続します。安全なネットワークが形成されると、エージェントはマスターとシームレスに通信できます。Salt Master は、スケーラビリティの高いアーキテクチャと ZeroMQ メッセージングシステムによって、高速データ交換を行いながら数千のノードを管理することができます。そのため、Salt は大企業での導入管理にも適しており、LinkedIn、RackSpace、NASA などの大規模組織も採用しています。

Salt はデフォルトでコマンドラインインタフェース(Command Line Interface、CLI)を提供し、REST API も備えています。構成情報をYAMLやJSONなどの形式で格納できるため、他のシステムと簡単に統合することができます。minions からデータをフェッチし、システム設定のために使用することもできます。

関連Blog: Setting Up Your First Puppet Master Server

Salt は、イベントがメッセージバスに送られ、Salt reactors が事前に定義された設定に従って処理する、モジュール式のイベント駆動型システムです。Salt では、ビーコン技術を使用してサービス停止時に reactors に警告します。簡単に独自の変更を加えることができるモジュールの拡張性も注目に値します。APIと通信するためのコードの実行モデルやサービスの構成を定義する状態モジュールを、簡単に記述し、PyTest でテストし、すべてを文書化することができます。この設定にはマスターは必要ありません。この機能を使用すると、既存のデータベースまたはAPIに状態を統合することができます。

Salt のもう一つのユニークな特徴は、着脱可能なキーストアです。キーストアを使用すると、機密性の高い grain データをSQLに格納したり、外部ソースからパスワードを取得したりすることができます。grains と states は、テンプレートとして外部データストアに安全に格納されます。

Salt には2つのバージョンがあります。Salt 自体はオープンソースで完全に無料ですが、SaltStack はエンタープライズ・バージョンです。エンタープライズ・バージョンには、GUI、フロントエンド解析エンジン、カスタムレポートとダッシュボード、統合データベース、包括的なモジュールライブラリなどの追加機能があります。

Salt とそのエンタープライズ版である SaltStack Enterprise は、まだ広く知られているとは言えませんが、構成管理や自動化オーケストレーションの分野で効果的に利用できる可能性を持っています。ユニークなイベント駆動システム、ビーコン技術、速いパフォーマンスなどによって、企業の規模を問わず、Chef や Puppet などと競合する候補になり得るでしょう。

 

Comments
Comments are disabled in preview mode.
Thanks for subscribing! Loading animation