Saltのドキュメント(例 here )で確認できる限り、サポートされているモジュールには主に2つのタイプがあります:state modulesおよび実行モジュール(レンダラー、リターナーなどもあることは知っています)。 SLSファイルのほとんどの例には、(salt.state名前空間の下の)状態モジュールのみに関連するステートメントが含まれていますが、実行モジュールの場合は、コマンドラインの例のみが示されています。たとえば、「service」という名前の2つのモジュール、salt.states.serviceとsalt.modules.serviceがあります。現在、SLSファイルで実行モジュールを使用すると問題が発生します。実行モジュールがまったく使用できないか、使用できるようにするための何かが欠けているようです。私の質問は:SLSファイルで実行モジュールを使用することは可能ですか?たとえば、salt.modules.service.restart関数を使用してUbuntuマシンでサービスを再起動するにはどうすればよいですか?また、これらのモジュールタイプの違いを明確に理解していません。
私のサービス名はSelenium-nodeで、いくつかの組み合わせを試しましたが、すべて失敗しました。
# First attempt:
Selenium-node:
service.restart
# Another one:
service:
- restart
- name: Selenium-node
# Or even:
Selenium-node:
service:
- restart
Git状態と実行モジュールを操作するときにも同じ問題に直面しました。ただし、(ドキュメントに示されているように)ミニオンで次のコマンドを実行すると、成功します。
$ Sudo salt-call service.restart Selenium-node
あなたは正しいです実行モジュールと状態モジュールの間に大きな違いがある。残念ながら、用語moduleは少し過負荷です。
実行モジュールは、Salt Minionに送信されてすぐに実行されるコマンドです。例は、「Apacheのインストール」または「memcachedの再起動」です。
state moduleは、Salt Minionに最終結果、つまり「状態」がどうあるべきかを伝えます。たとえば、「Apacheがインストールされていることを確認する」や「この特定の構成ファイルがファイルシステムに存在することを確認する」などです。重要な違いは、状態モジュールがシステムをチェックして、何もする前にマシンが目的の状態に適合しているかどうかを確認することです。したがって、「Apacheがインストールされていることを確認する」場合、Salt MinionはApacheがインストールされているかどうかを確認し、Apacheがインストールされている場合は何もしません。明らかでない場合、Saltは必要に応じてApacheをインストールします。
ここで、質問で指摘したようにSeleniumノードの再起動を完了するには、サービスに何かを監視させる必要があります。通常、パッケージの変更や構成の変更。これにより、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を使用するときにサービスを再起動させる処理方法です。このようにして、サービスは必要なときにのみ再起動されます。これにより、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"