私は、異なる展開を実現するためにガードをプログラムする方法のいくつかの例を探しています。アプリケーション全体としてexe1、exe2、sql1、sql2があるとします。私は、アプリケーション全体を展開するためのステップを備えた完全な料理ブックを作成します。それを自分のサーバーに展開します。シェフfor Windows、変更を展開するGaurdの例
次に、sql2を変更します。私は料理本を変更してアップロードします。完全な料理本はサーバーまで行きます。今、私はシェフにsql2のために必要なデプロイメント・ステップを実行させたいと思います。シェフが自動的にそれを処理しますか?私はガードが書かれている例を見ています。インストールされていない場合はDBインスタンスの存在をチェックします。ファイルの変更をチェックし、変更にのみデプロイするようなガードを作成する必要がありますか?ベストプラクティスは何ですか?
シェフのチュートリアルの例を見ると、これは当てはまりません。例は、自分自身を書く必要があるというチェックで分かれています。インストールされていない場合のみIISをインストールするように、作成されていない場合はDBを作成します。私は、その例が冪等をプログラムしなければならないことを示すために書かれたものと仮定します。 – Amit
同じことを複数回実行しても状態や結果などが変わることはありません。つまり、実行中のサーバ上のDBを再デプロイすることは必ずしも冪等ではありません。サーバーにデータがない場合を除きます。同様に、いくつかのスクリプトは、状態/結果を変更することなく、何度も何度も実行することはできません。シェフの例では、適切な警備員の配属方法を明確に示し、苦労しています。 – Amit
多くのチュートリアルは、特に優れたシェフコードの制作を目的としたものではありません。 IISをインストールするために使用される 'windows_feature'リソースは、レジストリ内のインストールされている機能のリストをチェックして、各コンバージドでインストールを実行する必要があるかどうかを調べることができるため、私が言ったように、いくつかのリソースは冪等ではないので、あなた自身のガードを書くか、実行されているコマンドが冪等であることを保証する必要があります。 – coderanger