最近、ピラー内のいくつかの静的変数からいくつかのサーバのnginx設定を処理するソルト状態を作成しました。私はこれをすべてのサーバーに展開したかったのですが、これを行う前に、最初にテストされたサーバーにconfigが適用される前に確認したかったのです。コンフィギュレーションが成功した場合に限り、salt状態からnginx configをリロードする
Nginxには、コマンドラインで頻繁に使用するinbuilt configtestがあり、saltにはconfigtestを実行するために使用できるnginxモジュールがあることがわかりました。
私は私の状態ファイルに次があります。
reload-nginx:
service.running:
- enabled: True
- reload: True
- watch:
- pkg: nginx
- file: /etc/nginx/sites-available/*
- file: /etc/nginx/nginx.conf
これは、設定ファイルが変更された場合nginxのリロード、またはnginxのインストールがアップグレードされた場合/変更しなければなりません。私は私の状態ファイル(未テスト)で、以下を使用して設定・テストを実行することができると信じて:
nginx-config-test:
module.run:
- name: nginx.configtest
そして私は、私はリロード-nginxの状態で時計にこの状態を追加した場合、設定試験に合格した場合、それはリロードと信じて。
はしかし、私はリロードがnginxのは、と設定試験のパスを変更した場合、設定ファイルのいずれかが設定テストに合格したとを変更、またはしている場合にのみ発生します。 ALLが本当であれば、経験を使って同じメソッドを複数使用することができます(私は3つの異なるonlyifを持つことはできません - 私が間違っていれば私を修正することができます)。
しかし、設定ファイルが変更された(またはnginxが更新されていて)configtestが成功した場合に限り、nginxをリロードする方法はありません。
これは可能ですか?
私は私の答えを更新しました。 watchプロパティが期待どおりに動作するためには、module.waitではなくmodule.waitを使用する必要があるようです。私は周りに初めてそれをキャッチしなかった、申し訳ありません。 – Andrew