シェフのクックブックのバージョン管理に関するアイデアを探しています。環境内の特定のバージョンを固定していることは承知していますが、どうすればよいかわかりません。
サードパーティのコミュニティブックをクックブックフォルダにインストールするlibrarian-chefを使用します。私たちはそれらの本に触れることはなく、時々より新しいバージョンに更新するだけです。
また、コミュニティー用のクックブック(include_recipe
)。
理論的には、カスタムブックが依存するコミュニティブックの特定のバージョンを指定して、環境設定でクックブックのバージョンを設定できますが、問題は、これらのコミュニティブックがバージョンを指定しない他のブックに依存する可能性があることです。そして、その深くネストされた依存関係は続くかもしれません。
そのため、クックブックをchefサーバーにアップロードしても、依存するクックブックも変更される可能性があるため、製品が壊れないという保証はありません。
現時点で確認できる唯一の解決策は、コミュニティやカスタムなど、環境設定で使用するすべてのクックブックバージョンを指定することです。しかし、それから私は各クックブックを調べて、それらのバージョンを理解する必要があります。
また、librarian-chefの更新を随時行っています。変更されたバージョンを追跡するのが難しくなり、環境のバージョンを更新するのを忘れないようにするのは難しいと思います。
あなたの経験とベストプラクティスを共有してください。きっと他の人にも重宝すると思います。
Chefを本格的に使い始めて間もなく、同じ問題に直面しました。 4つのことを運用的に始めたとき、私は正気の感覚にたどり着きました。これらはChefコミュニティの一部の人にとって「ベストプラクティス」と見なされない場合があることに注意してください。それにもかかわらず、これが私の正気、再現性、秩序を私の世界にもたらした方法です。
これが誰かを助けることを願っています!
-更新-
ほぼ3年後、これらの原則は引き続き私に役立ちました。しかし、もう1つアドバイスを追加します。これは、シェフよりもシェフソロを好んだのと同じ理由です。
2つの問題があります。
記事 クックブックバージョンのエッセンシャル はクックブックバージョンの最良のリファレンスです。 #1によると、異なるバージョンのクックブックを管理して異なる構成セットを提供するのは難しい仕事であり、特にクックブックサイトのほとんどのクックブックがこの仕事をうまくこなさないクックブックの依存関係が混在しているためです。そのため、設定が壊れる可能性があります。また、コンポーネントの実行時の動作をテストしてバージョンを管理しなかった場合は、機能しなくなります。そのため、環境オブジェクトでバージョン番号を指定せずにクックブックをアップロードすることはお勧めできません。したがって、クックブックのバージョンを環境オブジェクトで管理し、新しいクックブックのバージョンをプロモートするときに慎重にテストしてください。私は通常、SCMで環境オブジェクトを管理し、変更されたクックブックが他の既存のコンポーネントで適切に機能するまで、自動化ジョブを介してchefサーバーにアップロードしませんでした。
#2によると、これは実際のレシピ依存関係が各ノードで機能する場所であるため、トリッキーなトピックです。簡単に言えば、重要なノードの場合、ノード/ロール実行リストでレシピのバージョンを指定することで、レシピの依存関係をより適切に制御できます。それは細かいグリットの制御であり、テストや宣伝のコストが高いので、私はほとんどこれをしません。ただし、重要な役割/ノードの場合、これは悪い考えではありませんが、構成の変更に対する保険を提供します。