きみはねこみたいなにゃんにゃんなまほう

ねこもスクリプトをかくなり

SaltStack を使ってみる

(=˘ ꒳ ˘=) ちょっと興味が湧いたので塩を舐めてみる...

https://docs.saltstack.com/en/latest/ に従ってチュートリアルを一通り触ってみました。

  • 基本的な動作編: https://docs.saltstack.com/en/getstarted/fundamentals/
    • master + minion x 2 という構成でリモートな複数ホスト上でコマンドを一斉実行したりします
    • HTTP Proxy 環境下では vagrant up した後、無言で止まることがあるので適宜 vagrant-proxyconf あたりのプラグインで設定してやるとうまく進むようになります
  • 設定ファイルのマネジメント編: https://docs.saltstack.com/en/getstarted/config/
    • Pillar や Jinja テンプレートなど、設定ファイルやそこで使えるパラメータの管理方法についてです
    • mysqld をインストールする場面で mysql-server を指定しないと動きませんでした
  • イベント管理編: https://docs.saltstack.com/en/getstarted/event/
    • イベント処理の概要や Reactor などイベントをトリガに発火する処理の記述についてです

ざっと触ってみた感じは宣言的定義が主体であるプロビジョニングツールといった感じでした。 設定ファイルに Jinja テンプレート処理を書き込めるあたり、かなり凝った処理も行えそうです。

宣言的定義に関連してひとつ気になったのですが、チュートリアルの途中まで install vim のように命令的な Session ID が振られていたのが、途中から vim installed のように宣言的な Session ID に変わったところです。 SaltStack の中でもブレがあるのでしょうか、どちらが SaltStack 流なのか気になるところですね。 個人的には pkg.installed という命名から伺える意向を汲んでいるように見える宣言的な Session ID の方が好みです。

命令を定義するのではなく、あくまで状態の定義を行い、SaltStack はホストの状態と定義された理想状態を比較して適宜処理を行う。 install という処理が走るのはあくまで結果であって、大元にあるのはあくまで状態定義である、...と Kubernetes 的な思考を流用するとこうなるでしょうか。

それにしても Vagrant 様々です。VMにアレルギーを持っていた頃が遥か昔のことのようです。