为什么生成的测试厨房中的节点属性 dna.json 未包含在我的 chef-shell 执行中?

Why are the node attributes in the Test Kitchen generated dna.json not being included in my chef-shell execution?

使用以下命令我可以让 chef-shell 执行,提取我所有的食谱和数据包:

kitchen login
cd /tmp/kitchen
sudo -E /opt/chef/embedded/bin/chef-zero -d
sudo knife cookbook upload -a -c client.rb
sudo knife upload data_bags -c client.rb
sudo -E /opt/chef/bin/chef-shell -z -c client.rb -j dna.json -o "role-web-server::default"

但是,我得到以下异常:

Chef::Exceptions::InvalidDataBagItemID
--------------------------------------
Data Bag items must have an id matching /^[\.\-[:alnum:]_]+$/, you gave: nil

Cookbook Trace:
---------------
  /tmp/kitchen/cache/cookbooks/chef-vault/libraries/chef_vault_item.rb:44:in `chef_vault_item'

... other stacktrace...

nil 提供给 chef_vault_item 函数,当我在 .kitchen.yml 中指定了适当的值时,它在我传递的 dna.json 中进入主厨-shell。我知道这个值在那里,因为我的常规 'kitchen converge' 发现该属性很好。

为什么生成的测试厨房中的节点属性 dna.json 未包含在我的 chef-shell 执行中?我在 Test Kitchen VM 中将 chef-shell 设置为 运行 是不是完全错误?

chef-shell 的 -z 选项不会自动涉及 chef zero/local-mode 系统。它早于那些,-z--client 的缩写形式,它只使用 client.rb 中的配置。您需要修改它以指向 Chef Zero。

您确定要使用 chef-shell 吗?听起来更像是你想在那里使用 chef-client