3200以上のクックブックがChefスーパーマーケットで利用可能になっているため、解決する必要があるニーズをカバーするクックブックがすでにあることがよくあります。
ほとんどの場合、既存のクックブックのテンプレート、変数、またはリソースに変更が必要です。
既存のクックブックをオーバーライドおよび/または改善するためのステップは何ですか?彼らのコードをフォークせずに、将来バージョンの更新を取得する機能を保持しません。
3200以上のクックブックがChefスーパーマーケットで利用可能になっているため、解決する必要があるニーズをカバーするクックブックがすでにあることがよくあります。
ほとんどの場合、既存のクックブックのテンプレート、変数、またはリソースに変更が必要です。
既存のクックブックをオーバーライドおよび/または改善するためのステップは何ですか?彼らのコードをフォークせずに、将来バージョンの更新を取得する機能を保持しません。
回答:
詳細はたくさんありますが、使用する全体的なパターンは「ラップして拡張」です。一般的なアイデアは、コミュニティクックブック(通常は)に依存するクックブックをmycompany_originalthing
作成し、その呼び出しでレシピを作成することですが、そのinclude_recipe 'originalthing::whatever'
前または後に追加のものを追加するか、edit_resource
リソースの変更などの呼び出しを使用します。edit_resource
脆弱なコードにつながる可能性があるため、可能な限り避けてください。ただし、必要な場合は存在します。ラッパークックブックを使用して、属性の設定、カスタムリソースのサブクラス化またはラップなどを行うこともできます。
「コミュニティレシピでテンプレートを微調整する必要がある」という特定のケースでは、次のようになります。
include_recipe 'original::whatever'
edit_resource!(:template, '/path/to/something') do
source 'mytemplate.erb'
cookbook 'mycompany_original'
end
https://coderanger.net/rewind/edit_resource
で友達や友達の詳細を確認できます
レシピではなくカスタムリソースに基づいたクックブックを使用すると、状況はさらに複雑になる可能性がありますが、詳細は、拡張するクックブックが正確にどのように記述されているかに大きく依存します。