许多烹饪书,例如mysql cookbook都有多个.kitchen.yml文件.例如,mysql有一个.kitchen.yml和一个.kitchen-cloud.yml.看文档和代码测试的厨房,我看不到任何方式使用比其他配置文件.kitchen.yml,.kitchen.local.yml以及~/.kitchen/config.yml.如果我想使用mysql菜谱中的云驱动程序,我会:
cp .kitchen-cloud.yml .kitchen.ymlcp .kitchen-cloud.yml .kitchen.local.yml似乎应该有一个更清洁的方法来使用替代配置文件,强制替换默认配置文件.
谢谢
我把厨师食谱存放在厨师/食谱/文件夹中.跑步时kitchen converge我仍然会注意到
Berksfile, Cheffile, cookbooks/, or metadata.rb not found so Chef will run with effectively no cookbooks. Is this intended?
Run Code Online (Sandbox Code Playgroud)
我尝试了很多选项,例如:
suites:
- name: default
run_list: recipe[git]
cookbook_path: "chef/cookbooks"
Run Code Online (Sandbox Code Playgroud)
但我找不到合适的解决方案.如何指定烹饪书和角色的路径?
我正在调查ChefSpec报告(带覆盖范围)和测试厨房报告是否可以生成为junit格式,以便Jenkins可以解析它们以发布结果.或者如果有其他友好的方式,这些结果可以由詹金斯发布.
谢谢.
编辑1:对不起,如果我解释不正确,但我知道chefspec是单元测试,测试厨房用于集成测试.我在这个问题中的意思是如何以Jenkins解析的格式(例如junit格式)获取测试结果报告(对于chefspec和另一个手工测试厨房).
我试图java用测试厨房覆盖食谱中的属性.
当我尝试运行时kitchen converge default-centos-64,会出现错误的YAML错误.
---
driver:
name: vagrant
customize:
memory: 1024
cpuexecutioncap: 50
provisioner:
name: chef_solo
platforms:
- name: centos-6.4
suites:
- name: default
run_list:
- recipe[java::default]
- recipe[maven::default]
attributes: {
java.install_flavor: "oracle",
java.jdk_version: "7"
}
Run Code Online (Sandbox Code Playgroud)
我将上述内容粘贴到http://yamllint.com/.当我点击"Go"时,它会删除所有以"attributes"开头的行,然后显示绿色的"Valid YAML".
我有一个非常锅炉板,.kitchen.yml具有以下内容:
---
driver:
name: vagrant
platforms:
- name: ubuntu-14.04
suites:
- name: default
run_list:
- recipe[webserver::default]
Run Code Online (Sandbox Code Playgroud)
当我跑步时,kitchen converge我得到以下内容:
==> default: Setting hostname...
==> default: Replaced insecure vagrant key with less insecure key!
==> default: Machine not provisioned because `--no-provision` is specified.
Waiting for SSH service on 127.0.0.1:2222, retrying in 3 seconds
Waiting for SSH service on 127.0.0.1:2222, retrying in 3 seconds
Waiting for SSH service on 127.0.0.1:2222, retrying in 3 seconds
.....
......
Run Code Online (Sandbox Code Playgroud)
退出一点谷歌搜索后,我读到了Vagrant 1.7+ …
我正在使用Test Kitchen来测试一本食谱.我想指定将要安装的Chef solo的版本号.如何指定版本号?
在测试厨房中,有没有办法更新创建的实例,而不是每次都要销毁和重新创建实例?如果我改变了kitchen.yml并希望看到那个改变,那么运行整个destroy/create可能需要一段时间.
我是Chef的新手,并且一直在使用Test Kitchen来测试我的烹饪书的有效性,这非常有用.现在,我正在尝试确保在最初运行Chef之前,生产节点上的特定于环境的属性是正确的.这些将在角色中定义.
例如,我可能会使用带有开发设置的Vagrant框进行收敛,这样可以验证菜谱.我希望能够测试生产节点的角色.我想我希望这些测试作为描述我的环境的真相来源.看看Test Kitchen的文档,这似乎超出了它的范围.
我的假设是否正确?在首次在生产节点上运行Chef以确保其具有正确设置之前,是否有更好的方法来测试食谱?
我跑了一个测试厨房实例,一切都很好,但最后我确实试图用以下方法销毁厨房:
roberto@pc:~$ kitchen destroy
Run Code Online (Sandbox Code Playgroud)
Virtualbox给了我这个错误.
-----> Starting Kitchen (v1.1.1)
-----> Destroying <default-ubuntu-1204>...
[default] Destroying VM and associated drives...
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: Failed to complete #destroy action: [Expected process to exit with [0], but received '1'
---- Begin output of vagrant destroy -f ----
STDOUT: [default] Destroying VM and associated drives...
STDERR: There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["unregistervm", "2507bc77-3734-429b-a573-d92fadb80e95", …Run Code Online (Sandbox Code Playgroud) 我正在尝试开发一本食谱,使一个烧瓶应用程序与gunicorn和nginx一起工作.我已经成功到应用程序运行良好的本地sqlite数据库,请参阅我的食谱https://github.com/harrywang/flasky-cookbook.烧瓶应用程序使用环境变量发送电子邮件,例如:MAIL_USERNAME = os.environ.get('MAIL_USERNAME'),如何在厨房汇聚期间使用测试厨房将这些环境变量传递给ubuntu虚拟机?
test-kitchen ×10
chef-infra ×9
chef-solo ×1
chefspec ×1
cookbook ×1
flask ×1
gunicorn ×1
role ×1
ssh ×1
tdd ×1
testing ×1
vagrant ×1
virtualbox ×1
yaml ×1