5

私は Berkshelf の大ファンで、Berkshelf を使用したコミュニティ クックブックをいくつかリリースしています。

今、私は新しいシェフのプロジェクトを始めており、これについても Berkshelf と一緒に進めました。

しかし、プロジェクトでそれを使用すると、いくつかの混乱/困難が見つかります。

以下は Berksfile にあります。

site :opscode

cookbook 'mediawiki', github: 'millisami/chef-mediawiki'
cookbook 'sp-mediawiki', path: 'site-cookbooks/sp-mediawiki'

site-cookbooksフォルダー内にアプリケーションのクックブックを生成しました。

私が行うberks installと、エラーが発生します:

An error occurred while reading the Berksfile: no metadata.rb or metadata.json found at \
/Users/millisami/Code/chef-sp/site-cookbooks/sp-mediawiki

ここで、アプリケーションのクックブックをどこで生成するのだろうsp-mediawikiか?

新しいものを作成するだけならberks cookbook sp-mediawiki、ライブラリのクックブックに似ています。

librarian-chefこの種のフローは、私が別のプロジェクトで使用しているものを使用して完全に行われます。

だから、私は次のような行を入れようとしています:

  1. Berkshelf は、個々のクックブックを開発するのに適しています
  2. 司書シェフは、トップレベルのオーケストレーションを管理するのに適しています

私は正しいですか/間違っていますか? 組織のシェフレポを管理するために、Berkshelf をどのように使用していますか?

4

2 に答える 2

3

GitHub での私の回答で述べたように:

Berksfileの上部にがある場合は、chef-repoすべてのクックブックの依存関係を管理するために Berkshelf を使用できます。

たとえば、Apache2 クックブックに依存するアプリケーション クックブックを作成しているとします。私に追加しますBerksfile

site :opscode

cookbook 'apache2', '~> x.x.x' # optional version constraint

コマンドを実行して、berks installこのクックブックをインストールします。これはライブラリであるため、マシンの「どこかに」インストールされているため、わざわざ探す必要はありません。ここで、アプリケーション クックブックを生成します (これを と呼びましょうmy-apache2)。

$ berks cookbook my-apache2

これでスケルトンが作成されます。apache2次に、この新しいクックブックに依存関係として追加できますmetadata.rb

name 'my-apache2'
# suppressed
version '1.0.0'

depends 'apache2'

ディレクトリ構造は次のようになります。

chef-repo
  |  Berksfile
  |_ cookbooks
    |_ my-apache2

apacheクックブックがないことに注意してください。ライブラリのクックブックはすべて に~/.berkshelf/cookbooksありますが、心配する必要はありません。それらは自動的に取り込まれ、パスに追加されます。

別のチームメイトがあなたのchef-repoを使用したい場合は、それらを実行するだけでberks install、必要なすべての依存関係が彼らのマシンにもインストールされます.

のようなコマンドを実行するとberks upload、Berkshelf は必要なすべてのクックブックを自動的に見つけて解決します。

これは理にかなっていますか?

于 2013-12-21T04:32:52.193 に答える
1

これはここで答えられたと思います: https://github.com/RiotGames/berkshelf/issues/535

于 2013-07-17T03:51:36.580 に答える