3

しばらく前にVagrantを使用しましたが、次のものを使用できました。

config.vm.provision :chef_solo do |chef|
chef.recipe_url = 'https://github.com/opscode/cookbooks/tarball/master'
chef.add_recipe 'nginx'
chef.add_recipe 'mysql'
chef.add_role 'web'

# You may also specify custom JSON attributes:
# chef.json = { :mysql_password => '' }
end

今では非推奨のようです。新しいレポをどのように使用しますか?

4

1 に答える 1

14

まず、私のアドバイスは、Gitのマスターブランチから直接誰かのクックブックを使用しないことです。クックブックリポジトリの個々の作成者/メンテナ(個人またはモノリシック)が各「バージョン」にGitタグを持っている場合は、それを使用します。それ以外の場合は、インフラストラクチャで機能することがわかっている特定のコミットを使用します。GitHubはコードを共有するための便利なサイトですが、これらは開発リポジトリであることを覚えておくことが重要です。比較すると、ほとんどの人はライブラリコアのマスターブランチをアプリケーションに使用せず、そのライブラリのリリースされたバージョンを使用します(gem、cpanモジュール、パッケージなど)。

次に、Opscodeのクックブックは、READMEに記載されているとおりに動作することを確認するためにテストされたバージョンをリリースしています。これらのリリースは、ChefCommunitySiteに公開されています。GitHubにリポジトリがありますが、サイトのリリースを使用することをお勧めします。

クックブックをサイトからローカルシステムに取得するために、ローカル開発ワークフローをサポートする複数のツールがあります。内部的には、コミュニティの多くの人々がそうであるように、OpscodeはBerkshelfを使用しています。これは、 RubyGemsBundlerに似た依存関係リゾルバーを含むかなり完全なワークフロー管理ツールです。BerkshelfはVagrantとも統合されています。つまり、「berksfile」内のすべてのクックブックがVagrantマシンにコピーされ、Chefの実行で使用されます。

chef-repoのトップレベルにあるサンプルBerksfileは次のようになります。

site :opscode
cookbook "nginx"
cookbook "mysql"
cookbook "my_application", :git => "https://git.example.com/cookbooks/my_application.git"

次に、を使用berks installしてクックブックをダウンロードします。Berkshelfは、クックブックのメタデータを使用して依存関係も解決します。これは、コミュニティサイトAPIを使用してnginxおよびmysqlクックブックをダウンロードし、内部Gitリポジトリから「my_application」クックブックを取得します。次に、vagrantでberkshelfを使用するには、これをvagrantfileの先頭に配置します。

require 'berkshelf/vagrant'

次に、「vagrant up」すると、Chef Soloを使用している場合、berkshelfはすべてのクックブックをVagrantマシンにコピーします。Chef Client / Serverを使用している場合は、を使用berks uploadしてすべてのクックブックをサーバーにアップロードすると、vagrantのクライアントプロビジョナーがサーバーからダウンロードされます。

ライアットゲームズのBerkshelfの主要な開発者の1人であるJamieWinsorが、完全なガイドを作成しました。

Berkshelfの代替ツールは、LibrarianChefです。これは純粋に依存関係管理ツールであり、ワークフローツールではありません。それはそこにあるすべてのコンテンツを管理するあなたのディレクトリを「引き継ぎ」、cookbooksあなたのカスタマイズされたクックブックはに入るsite-cookbooks。次に、通常どおりソロプロビジョナーでVagrantを使用するか、。でクライアント/サーバーを使用しknife cookbook uploadます。

最後にknife、Chef Clientに同梱されているため、RubyGemにはプラグインがありますcookbook site install。これはChefgemの一部としてOpscodeによってサポートおよび保守されていますが、多くの人々はワークフローをBerkshelfまたはLibrarianを使用するようにシフトしています。Chefのドキュメントには、このプラグインに関する詳細情報があります。

さらに質問がある場合は、#chef ircチャネルまたはChefメーリングリストが質問をしたり、ワークフローについて話し合ったりするのに最適な場所です。

于 2013-02-21T15:41:05.350 に答える