Chef infra 带测试厨房的备用驾驶员

Chef infra 带测试厨房的备用驾驶员,chef-infra,test-kitchen,Chef Infra,Test Kitchen,许多烹饪书(如)都有多个.kitchen.yml文件。例如,mysql有一个.kitchen.yml和一个.kitchen-cloud.yml。查看测试厨房的文档和代码,除了.kitchen.yml、.kitchen.local.yml和~/.kitchen/config.yml之外,我看不到任何使用配置文件的方法。如果我想使用mysqlcookbook中的云驱动程序,我会: cp.kitchen-cloud.yml.kitchen.yml cp.kitchen-cloud.yml.kitch

许多烹饪书(如)都有多个.kitchen.yml文件。例如,mysql有一个.kitchen.yml和一个.kitchen-cloud.yml。查看测试厨房的文档和代码,除了
.kitchen.yml
.kitchen.local.yml
~/.kitchen/config.yml
之外,我看不到任何使用配置文件的方法。如果我想使用
mysql
cookbook中的云驱动程序,我会:

  • cp.kitchen-cloud.yml.kitchen.yml
  • cp.kitchen-cloud.yml.kitchen.local.yml
  • 还有别的吗
似乎应该有一种更干净的方法来使用替代配置文件,即强制替换默认配置文件


感谢

Kitchen提供了三个环境变量来控制在何处查找每个可能的配置文件。要使默认行为明确,可以按如下方式设置:

KITCHEN_YAML="./.kitchen.yml"
KITCHEN_LOCAL_YAML="./.kitchen.local.yml"
KITCHEN_GLOBAL_YAML="$HOME/.kitchen/config.yml"
您不需要覆盖所有这些,因此可以使用
.kitchen cloud.yml
运行测试厨房,如下所示:

$ KITCHEN_YAML=".kitchen-cloud.yml" kitchen test

除了zts所说的,请记住您可以在厨房文件中使用ERb,因此您的驱动程序配置可以如下所示:

driver:
  name: <%= ENV['KITCHEN_DRIVER'] || 'vagrant' %>
驱动程序:
姓名:

。。。要添加到coderanger,如果您希望根据CI工具是否设置环境变量来选择驱动程序或选项,您还可以执行以下操作:

driver:
  name: <%= ENV['KITCHEN_DRIVER'] || 'vagrant' %>

---
驱动程序插件:
驱动程序配置:
需要厨师长综合服务:11.10.4
aws\u访问\u密钥\u id:
aws\u密码\u访问\u密钥:
aws\u ssh\u密钥\u id:
ssh_密钥:
地区:
区域可用性:
风味标识:“t2.小”
组:[“测试厨房”]
定制:
内存:2048
平台:
-名称:ubuntu-14.04
驱动程序配置:
图像编号:ami-6ab2a702
用户名:ubuntu
标记:{“名称”:“测试厨房”}
巴斯尔:
sudo:是的
套房:
-名称:默认值
运行列表:[
]
属性:{
}


通过这种方式,您可以维护单个文件并避免不同的平台测试(在一个文件中进行更改,而在另一个文件中忘记更改)。还有一些情况下,.kitchen.local.yml中提供的选项可能与.kitchen.yml中的选项冲突。

我是在寻找一个解决方案,用一个厨房文件支持多个驱动程序时发现这个问题的,艾夫斯的答案非常有帮助。我对它进行了调整,以执行以下操作

  • 默认为流浪司机
  • 允许用户使用KITCHEN_driver环境变量覆盖驱动程序设置
  • 选择docker_ssh驱动程序(如果已安装)
---
司机:
姓名: