1

我正在使用 Vagrant + Berkshelf + Chef Solo 来反映我的生产 AWS OpsWorks 盒子在我的开发机器上的行为。

我可以很好地安装 vagrant box,但是现在,在配置好之后,我希望能够运行与配置期间使用的食谱不同的 Chef 食谱。我想这样做是因为我试图模仿 OpsWorks 的行为:他们让我deploy只需按一下按钮即可运行配方。我希望能够在我的 vagrant box 中使用 vagrant 或 chef-solo 来运行相同的食谱。

solo.rb我想我可以通过在配置过程中添加一个配方来解决这个问题,该过程为我想要运行的不同按需配方构建不同的配置文件。这些配置文件将指向 Vagrant/Berkshelf cookbooks_path/tmp/vagrant-chef-1/对我而言),然后将运行列表设置为适当的配方。然后厨师独奏将使用这些配置文件。

我感觉以前有人以更优雅的方式解决了这个问题。有一个更好的方法吗?

如果没有,是否有人知道从 Vagrant 或配方中找到食谱路径的方法,这样我就不必硬编码/tmp/vagrant-chef-1/到我的solo.rb配置文件中?

4

2 回答 2

1

您可以添加多个供应商。因此,在您的第一个config.vm.provision :chef_solo块之后,只需添加另一个应用您想要在第一次部署后运行的配方。

于 2013-05-15T06:21:21.537 回答
0

/tmp/vagrant-chef/solo.rb实际的 chef-solo 配置和属性存储在/tmp/vagrant-chef/dna.json您的 vagrant box 中的文件中。

执行完整的厨师配置:

sudo chef-solo -c /tmp/vagrant-chef/solo.rb -j /tmp/vagrant-chef/dna.json

覆盖定义的运行列表并只运行一个配方(例如 memcached):

sudo chef-solo -c /tmp/vagrant-chef/solo.rb -j /tmp/vagrant-chef/dna.json -o recipe[memcached]

于 2017-01-24T23:14:55.690 回答