SaltStackを介してシステムサービスファイルを展開および変更します。
たとえば、ファイル/etc/systemd/system/superfoo.service
が変更され、systemdが次の警告を発行します。
Warning: Unit file of superfoo.service changed on disk,
'systemctl --system daemon-reload' recommended.
これをソルトスタックで自動化する方法は?
@MaksaSilaが最初に回答しましたが、より完全なソリューションを提供したいと思います。
ファイルの変更を処理するcmd.runが必要なだけです。私は同様のアプローチを使用しています。
#sample.sls systemd-reload: cmd.run: -名前:systemctl --system daemon-reload -onchanges: -ファイル:superbar.service superbar.service: file.managed: -名前:/ etc/systemd/system/superbar .service superfoo.service: file.managed: -name:/etc/systemd/system/superfoo.service -onchanges_in : -cmd:systemd-reload
後者のアプローチでは、systemd部分とサービス部分を異なるSLSファイルに分割できます(行うすべてのslsファイルにsystemdを含めることを忘れないでくださいonchanges_in
in)。
状態の関係と依存関係の詳細については、 このマニュアルページ を参照してください。
@jollyrogerの回答は、バージョン0.15.0未満に適しています
0.15.0から、systemd_service.systemctl_reload
: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.systemd_service.html#salt.modules.systemd_service.systemctl_reload
superbar.service
file.managed:
- name: /etc/systemd/system/superbar.service
module.run:
- name: service.systemctl_reload
- onchanges:
- file: /etc/systemd/system/superbar.service
これによりコードが大幅に簡略化されると思います。
[編集]ディレクティブ "systemctl_reload"はsystemctl reload
、しかしそれはsystemctl --system daemon-reload
の下に。 https://github.com/saltstack/salt/blob/9bbbd3629418b2b086360f5b303323ec55ca0315/salt/modules/systemd_service.py#L377-L399
Saltstack Docはまた、
「systemctlをリロードします。これは、ユニットファイルが更新されるたびに必要なアクションです。」
このファイルをコピーした後、あなたの状態でこれを実行することをお勧めします:
update-systemd:
cmd.run:
- name: systemctl --system daemon-reload