厨房属性仅适用于一个平台
Kitchen attributes only working on one platform
我的 .kitchen.yml
文件有问题。我希望为 all 我的平台加载我的属性,但它只为我的 one 平台加载。这是我的 .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
.
attributes/default.rb
default['web']['app']['name'] = nil
default['web']['app']['zip'] = nil
我的默认配方在开始时检查是否在继续脚本之前设置了属性,我使用以下方法执行此操作:
recipes/default.rb
ruby_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
时,kitchen 启动我的 Windows Server 2012 R2
VM 并成功部署我的应用程序(属性有效)。一旦该平台完成,kitchen 就会为我的 Windows Server 2008 R2
VM 重新开始整个过程。虽然,此时它抛出了我在 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.
因为这是答案,所以将其复制下来:当您在测试实例上添加、删除或更改属性数据时,您需要销毁并重新创建该实例。属性数据在创建阶段被收集和缓存,所以简单地 re-运行 converge
不会做任何事情。
我的 .kitchen.yml
文件有问题。我希望为 all 我的平台加载我的属性,但它只为我的 one 平台加载。这是我的 .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
我的默认配方在开始时检查是否在继续脚本之前设置了属性,我使用以下方法执行此操作:
recipes/default.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
时,kitchen 启动我的 Windows Server 2012 R2
VM 并成功部署我的应用程序(属性有效)。一旦该平台完成,kitchen 就会为我的 Windows Server 2008 R2
VM 重新开始整个过程。虽然,此时它抛出了我在 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.
因为这是答案,所以将其复制下来:当您在测试实例上添加、删除或更改属性数据时,您需要销毁并重新创建该实例。属性数据在创建阶段被收集和缓存,所以简单地 re-运行 converge
不会做任何事情。