Vagrant 将Chef环境与Berkshelf一起使用

Vagrant 将Chef环境与Berkshelf一起使用,vagrant,chef-infra,berkshelf,Vagrant,Chef Infra,Berkshelf,对于我当前的项目,我有一本环境烹饪书,其文件夹结构如下: . ├── Berksfile ├── Vagrantfile ├── environments │   └── development.rb ├── metadata.rb └── recipes └── default.rb 在我的Vagrant文件中,我使用具有以下配置的chef_solo供应器: config.vm.provision :chef_solo do |chef| chef.environments_pa

对于我当前的项目,我有一本环境烹饪书,其文件夹结构如下:

.
├── Berksfile
├── Vagrantfile
├── environments
│   └── development.rb
├── metadata.rb
└── recipes
    └── default.rb
在我的Vagrant文件中,我使用具有以下配置的chef_solo供应器:

config.vm.provision :chef_solo do |chef|
  chef.environments_path  = 'environments'
  chef.environment        = 'development'
  chef.run_list = [
    "recipe[service-ldap::default]"
  ]
end
我已经安装了vagrant Berkshell插件,并且配置工作正常,此外,我没有在environments/development.rb中设置任何属性


我的问题是,在Berkshelf中是否可以使用Chef环境,如果可以,如何使用,或者这是否不是Berkshelf中开发工作流的一部分。也许你可以给我一个提示,告诉我如何解决问题。

嗨,咪咪:-因为Berkshell是在Chef运行依赖项解析之前运行的,所以它根本不关心环境。然而,由流浪汉引发的厨师长跑步会尊重环境。所以我想知道,为什么不包括您的环境属性?指向您的代码的链接可能会帮助其他人。您所指的建议是使用特定于环境的烹饪书,并将厨师环境替换为整个环境共享的烹饪书版本,因为可以对烹饪书进行版本控制。不确定,如果你对这种模式的看法存在误解。真希望我坐在你旁边。嗯,嗯,好像我不了解环境食谱模式的概念。使用该模式时,我认为您只有一本用于设置整个机器/应用程序的食谱。其想法是使用Chef环境来解决此机器/应用程序在开发和生产中的差异。事实上,坐在一起讨论这个问题可能更容易:-如果您希望只拥有一本代表您的应用程序的顶级烹饪书,那么您可能想看看。它使用顶级食谱中的metadata.rb/Berksfile.lock来锁定依赖关系图,而不是环境。这意味着您可以将环境再次用于诸如dev/test/staging/prod之类的环境,您只需指定顶级烹饪书的版本,所有可传递的DEP都在其中定义。@TorbenKnerr-thx以获取答案。我认为我的问题在于我对环境食谱模式的误解。在再次阅读并试图理解它的用途之后,我认为,一旦我以正确的方式使用它,我就不再需要厨师环境了。