我希望创建一个基于 Web 的应用程序的开发人员环境,该环境将使用 vagrant 在 VM 上安装应用程序服务器和数据库服务器。我正在使用开源厨师服务器和带chef_client
供应商的流浪者。但是,每次供应开发者节点时,chef_client
供应者都会在厨师服务器上创建一个客户端节点。这是不可取的,因为许多开发人员将使用此设置。这样的节点可能会被创建和销毁多次。因此不需要在 Chef 服务器上维护此类节点的列表。
chef_solo
是另一种选择,但它要求系统中存在说明书。我们也使用厨师服务器作为食谱的存储库。因此,开发人员不需要在他/她的系统中有特定的说明书。我也查看了 berkshelf,我可以在其中配置chef_api
厨师服务器的路径。但这也需要一个节点。以下是我的流浪文件:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise64-chef"
config.vm.network :private_network, ip: "33.33.33.10"
config.omnibus.chef_version = '11.8.2'
config.vm.provision "chef_client" do |chef|
chef.log_level = :debug
chef.environment = "development"
chef.delete_node = true
chef.delete_client = true
chef.node_name = "sample_app"
chef.chef_server_url = "https://chef-server-url"
chef.validation_key_path = "chef-validator.pem"
chef.add_role "base"
chef.add_role "pg_client"
chef.add_role "application_server"
chef.add_role "db_server"
chef.add_recipe "deploy_application"
end
end
我希望不在sample_app
厨师服务器上创建节点。否则这符合我的目的。欢迎使用 Chef 服务器提供开发人员环境的任何其他策略。