0%

Salt チュートリアル - Part2: Reactor System

Saltは構成管理ツールの側面もありますが、本来はPUB/SUBで分散環境でリモートのコマンドを実行するためのツールです。
そのためReactorやEventを使ったイベント駆動システムの側面もあります。Message Busが必要なシステムのインフラとしてSaltを使うのおもしろいです。

Reactor System

SaltはスケールするZeroMQを使ったPUB/SUBの良い実装例でもあります。
イベントハンドラもPythonで記述できるので、任意の処理をsalt-masterで実行できます。

Kubernetesのreactor

ドキュメントを読んでもタグの'salt/minion/*/start'のマッチの意味を理解できなかったのですが、
Infrastructure Management with SaltStack: Part 3 – Reactor and Eventsに説明がありました。

This tag says “every time any minion service starts”.

このタグで、minionが起動したときのイベントをmasterで受信することができます。

kubernetes/cluster/templates/salt-master.sh
cat <<EOF >/etc/salt/master.d/reactor.conf
# React to new minions starting by running highstate on them.
reactor:
- 'salt/minion/*/start':
- /srv/reactor/start.sls
EOF

イベントを受信すると、masterはイベントを発行したminionに対してhighstateを実行します。
Kubernetesの場合は、minion用のコンポーネントがインストールされます。

kubernetes/cluster/saltbase/reactor/start.sls
# This runs highstate on the target node
highstate_run:
cmd.state.highstate:
- tgt: &#123;&#123; data['id'] }}