実行モジュールと状態モジュールには大きな違いがあることは間違いありません。残念ながら、モジュールという用語は少しオーバーロードされています。
実行モジュールは、Salt Minion に送信されてすぐに実行されるコマンドです。例としては、「Apache のインストール」または「memcached の再起動」があります。
状態モジュールは、Salt Minionに最終結果、つまり「状態」がどうあるべきかを伝えます。例としては、「apache がインストールされていることを確認する」または「この特定の構成ファイルがファイルシステムに存在することを確認する」などがあります。重要な違いは、状態モジュールがシステムをチェックして、何かを行う前にマシンが目的の状態に適合しているかどうかを確認することです。そのため、「Apache がインストールされていることを確認してください」の場合、Salt Minion は Apache がインストールされているかどうかを確認し、Apache がインストールされている場合は何もしません。明らかでない場合、Salt は必要に応じて Apache をインストールします。
質問で指摘したようにセレンノードの再起動を完了するには、サービスに何かを監視させたいと思うでしょう。通常、パッケージの変更および/または構成の変更。そうすれば、Selenium は必要なときにのみ再起動します。これが大まかな例です。私は selenium-node のインストールに詳しくないので、次の sls ファイルを例として考えてください。システムのパッケージ リポジトリから selenium-node をインストールできると仮定しています。
cat /srv/salt/selenium-node.sls
selenium-node:
pkg:
- installed
service:
- running
- watch:
- pkg: selenium-node
- file: /etc/selenium-node.conf
file:
- managed
- name: /etc/selenium-node.conf
- source: salt://selenium/selenium-node.conf # assuming config located at /srv/salt/selenium/selenium-node.conf on the Salt Master
ここでは、「selenium-node」ID 宣言の下に 3 つの状態があります。システム パッケージ、サービス、および構成ファイルを管理しています。サービスが selenium-node パッケージと構成ファイルの両方を監視していることに気付くでしょう。サービスが何かを監視している場合、デフォルトでは、「監視された」モノが変更を報告すると、サービスは再起動します。
これは通常、Salt States を使用するときにサービスの再起動を処理する方法です。このようにして、サービスは必要なときにのみ再起動されます。これにより、ソルト状態が冪等になり、実際に必要な場合にのみシステムに変更が加えられます。
さて、あなたの質問の2番目の部分に答えてください。はい、状態または sls ファイル内から実行モジュールを実行することは可能です。これは、「module.run」状態を通じて実現できます。ドキュメントはこちら: http://docs.saltstack.com/ref/states/all/salt.states.module.html#module-salt.states.module
この状態または sls ファイルを実行するたびに、サービスを再起動する方法は次のとおりです。
猫/srv/salt/selenium/selenium-restart.sls
restart_selenium:
module.run:
- name: service.restart
- m_name: selenium-node # m_name gets passed to the execution module as "name"