如何在 kitchen.yml 中进行多配置?
How to multi-provision in kitchen.yml?
我有一个 Vagrantfile,我在其中通过遍历 json 文件来配置不同的虚拟机。例如
cluster_config.each do |cluster|
cluster_name = cluster[0] # name of node
nodes_config = (JSON.parse(File.read("test_data_bags/myapp/_default.json")))['clusters'][cluster_name]['nodes']
nodes_config.each do |node|
config.vm.define node_name do |nodeconfig|
processes = node_values['processes']
processes.each do |process|
nodeconfig.vm.provision :chef_solo do |chef|
chef.data_bags_path = 'test_data_bags'
chef.run_list = run_list
chef.roles_path = "roles"
"myapp" => {
"cluster_name" => cluster_name,
"role" => node_role
},
}
end
end
end
end
我想在厨房内做同样的事情。获取一组属性和 foreach 数组项 - 运行 食谱 xyz - 这样我就可以使用 test-kitchen 编写一些测试,这可能吗?
谢谢
有几种不同的变通方法可以实现这一点,但它们都是绝对的变通方法。已打开一个讨论 support of multiple boxes on test-kitchen 的问题,您可以去那里阅读更多关于为什么这可能不会很快得到支持的信息。 TL;DR:这并不是该项目的真正目标。
解决方法包括:
- Chef-provisioning 可以 bootstrap 个配置的单个服务器 server/test-suite
- Kitchen-nodes provisioner 可以将每个服务器的数据共享给您设置中的其他测试套件
- A custom Vagrantfile template 用于测试厨房
我有一个 Vagrantfile,我在其中通过遍历 json 文件来配置不同的虚拟机。例如
cluster_config.each do |cluster|
cluster_name = cluster[0] # name of node
nodes_config = (JSON.parse(File.read("test_data_bags/myapp/_default.json")))['clusters'][cluster_name]['nodes']
nodes_config.each do |node|
config.vm.define node_name do |nodeconfig|
processes = node_values['processes']
processes.each do |process|
nodeconfig.vm.provision :chef_solo do |chef|
chef.data_bags_path = 'test_data_bags'
chef.run_list = run_list
chef.roles_path = "roles"
"myapp" => {
"cluster_name" => cluster_name,
"role" => node_role
},
}
end
end
end
end
我想在厨房内做同样的事情。获取一组属性和 foreach 数组项 - 运行 食谱 xyz - 这样我就可以使用 test-kitchen 编写一些测试,这可能吗?
谢谢
有几种不同的变通方法可以实现这一点,但它们都是绝对的变通方法。已打开一个讨论 support of multiple boxes on test-kitchen 的问题,您可以去那里阅读更多关于为什么这可能不会很快得到支持的信息。 TL;DR:这并不是该项目的真正目标。
解决方法包括:
- Chef-provisioning 可以 bootstrap 个配置的单个服务器 server/test-suite
- Kitchen-nodes provisioner 可以将每个服务器的数据共享给您设置中的其他测试套件
- A custom Vagrantfile template 用于测试厨房