我有一个Vagrantfile,其中通过循环json文件来配置不同的Vm。例如。

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可以从单个配置的服务器/测试套件中引导更多服务器
Kitchen-nodes provisioner可以与设置中的其他测试套件共享有关每个服务器的数据
用于测试厨房的custom Vagrantfile template

10-08 08:58