1
我遇到了.kitchen.yml
文件的问题。我希望我的属性能够加载我的平台的所有全部,但相反,它只能加载我的平台的一个。这就是我的.kitchen.yml
文件内容是这样的:厨房属性只能在一个平台上工作
---
driver:
name: vagrant
gui: true
provisioner:
name: chef_zero
transport:
name: winrm
elevated: true
platforms:
- name: win2012r2-standard
driver:
box: eltuko/win2012r2-chef-pester
customize:
memory: 2048
- name: win2008r2-standard
driver:
box: charris/windows-2008-r2-x64
customize:
memory: 2048
suites:
- name: default
run_list:
- recipe[xxx]
- recipe[yyy]
attributes:
web:
app:
name: "MyApp"
zip: "MyApp.zip"
chef_client:
config:
log_level: ":debug"
需要更多的环境?
我的食谱需要设置2个属性才能使其工作。默认情况下,这些属性值设置为nil
。
default['web']['app']['name'] = nil
default['web']['app']['zip'] = nil
我的默认配方检查,一开始,这个属性是继续脚本之前设置,我这样做是使用以下:
食谱/默认。 RBruby_block 'Check if node is configured correctly' do
block do
raise 'app name is not set.' if node['web']['app']['name'].nil?
raise 'app zip is not set.' if node['web']['app']['zip'].nil?
end
end
当我运行kitchen converge
,厨房推出我的Windows Server 2012 R2
VM,并成功地部署我的应用程序(属性工作)。一旦该平台完成,厨房然后再次启动整个程序为我的Windows Server 2008 R2
虚拟机。虽然在这一点上它抛出了我在我的recipes/default.rb
文件中创建的异常。
我收到以下错误只我Windows Server 2008 R2
VM:
================================================================================
Error executing action `run` on resource 'ruby_block[Check if node is configured correctly]'
================================================================================
RuntimeError
------------
app name is not set.
如果您在创建虚拟机后添加了属性数据,请确保您运行完整的破坏和重新创建循环(即“厨房测试”)。否则你看起来是正确的。 – coderanger
@coderanger哇!谢谢,运行'厨房测试'工作!我还用“厨房摧毁2008”和“厨房融合2008”对它进行了测试,就像一种魅力!我只是这么抛弃为什么'Windows Server 2012 R2'工作,但不是'Windows Server 2008 R2'。谢谢! +1 – Pwnzo