我正在使用Vagrant + Berkshelf + Chef Solo来镜像我的开发机器上的生产AWS OpsWorks框的行为。
我可以把流浪盒放得很好,但是现在,在配置之后,我希望能够从配置期间使用的烹饪书中运行不同的Chef配方。我想这样做是因为我试图模仿OpsWorks的行为:他们让我只需按一下按钮即可运行deploy
食谱。我希望能够在我的流浪盒内使用流浪汉或厨师独奏来运行相同的食谱。
我想我可以通过在配置过程中添加一个配方来解决这个问题,该配置过程为我想要运行的不同按需配方构建不同的solo.rb
配置文件。这些配置文件将指向Vagrant / Berkshelf cookbooks_path
(对我来说是/tmp/vagrant-chef-1/
),然后将运行列表设置为适当的配方。然后,chef-solo将使用这些配置文件。
我觉得有人以更优雅的方式解决了这个问题。有一个更好的方法吗?
如果没有,有没有人知道从Vagrant或配方中查找菜谱路径的方法,所以我不必将/tmp/vagrant-chef-1/
硬编码到我的solo.rb
配置文件中?
答案 0 :(得分:1)
您只需添加multiple provisioners即可。因此,在第一个config.vm.provision :chef_solo
块后,只需添加另一个应用您想要在第一次部署后运行的配方。
答案 1 :(得分:0)
实际的厨师独奏配置和属性存储在您的流浪者框中的/tmp/vagrant-chef/solo.rb
和/tmp/vagrant-chef/dna.json
文件中。
执行完整的厨师配置:
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]