24

開発環境を Vagrant に移行するために何が必要かを調べていますが、chef を使用して VM プロビジョニング プロセスを処理するのに苦労しています。私はこれまでシェフを使用したことがなく、この分野の Vagrant ドキュメントは意図的に弱い (範囲外) ため、手を使用することができました。

これをできるだけポータブルにしたいので、URLからクックブックをロードするのが理にかなっていると思ったので、これが私のVagrantfile.

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

私が単に何かを誤解しているだけであることに疑問の余地はないと思いますが、この Vagrant のコンテキストに適合すると思われるドキュメント ソースは見つかりませんでした。

ありがとう。

4

4 に答える 4

16

残念ながら、Vagrant と Chef の組み合わせに関するドキュメントはあまりありません。ライブラリアンを使用してクックブックを管理することを検討することをお勧めします。通常、Vagrantfile には次のようなブロックがあります。

config.vm.provision :chef_solo do |chef|
  chef.cookbooks_path = "chef/cookbooks"
  chef.roles_path     = "chef/roles"

  # ...
end

プロジェクトのルートに新しいディレクトリを作成しchef、次の行を my に追加します.gitignore

# Ignore librarian bundled cookbooks and cache
/chef/cookbooks
/chef/tmp

このchefディレクトリで、Gemfile を使用する場合と同様にlibrarian-chef init、作成された にクックブックを実行して追加することができます。Cheffile

cookbook "apt",
  :git => "git://github.com/fnichol/chef-apt.git",
  :ref => "cacher-client-solo-support"

cookbook "imagemagick", "0.2.2"

cookbook "mongodb",
  :git => "git://github.com/edelight/chef-cookbooks.git",
  :ref => "0.11.0"

バンドルする git リポジトリ、ファイル パス、およびバージョンを指定できるという利点が得られます。これは、複数のソースからのクックブックを使用している場合に非常に役立ちます。librarian-chef installlibrarianを実行すると、指定されたすべてのクックブックが取得されcookbooks、Cheffile の場所に関連するディレクトリに保存されます。

于 2012-01-23T21:11:36.083 に答える
0

また、Berkshelf を使用してクックブックを管理することもできます。Berkshelf はクックブックの管理を本当に簡単にしてくれます。

berkshelf gem をインストールし、berks init を実行して空の Berksfile を生成するだけです。

依存関係を解決するためにクックブックを berksfile に追加するには、いくつかの方法があります。

例 :

スーパーマーケットの使用からクックブックを解決するには:

source 'http://chefsupermarket.com'

cookbook 'mycookbook', '~> 1.3.6'

git から解決するには:

cookbook "mycookbook", git: "https://github.com/cookbooks/mycookbook.git"

また、クックブックをローカル ディレクトリに保持し、berksfile を使用して解決することもできます。

cookbook 'mycookbook', path: '/path_to_my/chef/cookbook'
于 2016-03-21T14:42:15.357 に答える