我正在为我正在研究的一些新厨师食谱编写 InSpec 测试。我想利用食谱使用的 data_bags 来遍历数据包项。我不知道如何在我的 InSpec 测试中访问它们!配方使用了 search、data_bag 和 data_bag_item 方法。但是这些方法在我的 InSpec 测试中似乎不可用。我怀疑这些是 Chef DSL 特定的方法?data_bags 的源代码受源代码控制,因此我可以在本地文件系统上访问它们的 json。
如何使用 InSpec 语法访问 Chef_zero 中的这些 data_bags?
我在网上找到了几个例子,但我没有看到 chef_zero 是如何实际加载 data_bags 的,以便它们可以在测试中使用,例如https://github.com/charlesjohnson/fundamentals-with-tests/blob/master /chef-repo/cookbooks/users/test/integration/default/serverspec/default_spec.rb 和 https://github.com/chef/chef/blob/master/kitchen-tests/test/integration/webapp/default_spec.rb
我在 Vagrant 测试厨房上使用 Windows server 2012R2 机器。这是来自其中一个数据包的数据包项的示例:
{
"User": "mcummins",
"FullName": "Martin Cummins",
"id": "mcummins"
}
这个特定的数据包列出了添加到管理员组的 Windows Active Directory 用户。
我已经在我的 .kitchen.yml 中设置了 data_bag_path (我在套件和配置器中设置了它),但我还没有到可以看到哪个是正确的地步:
---
driver:
name: vagrant
customize:
natdnshostresolver1: "on"
provisioner:
name: chef_zero
data_bags_path: ../../../data_bags
# client_rb:
# audit_mode: :audit_only
verifier:
name: inspec
platforms:
- name: mwrock/Windows2012R2
transport:
name: winrm
suites:
- name: default
data_bags_path: ../../../data_bags
run_list:
- recipe[SPMWindowsBuilder::default]
verifier:
inspec_tests:
- test/integration
attributes: