如何在 Test Kitchen 的节点上启用特定的 Ohai 插件

How to enable specific Ohai plugin on a node in Test Kitchen

我想在测试厨房的节点中启用 Passwd ohai 插件。在常规节点上,我通过添加来完成它:

ohai.optional_plugins = [
      :Passwd
]

/etc/chef/client.rb

我想在测试节点中实现相同的效果,所以我添加到我的 .kitchen.yml:

provisioner:
  name: chef_zero
  client_rb:
    Ohai::Config[:optional_plugins] =
      - passwd

但是我收敛节点的时候,插件没有开启。在测试节点上,在 /home/vagrant/.chef/client.rb 中没有关于我在收敛期间使用的 ohai 可选插件和模板的条目,看不到 node['etc']['group']['SOME_USERNAME']['gid'] 属性(即使在第二次收敛之后,因为 Ohai 必须 运行第一次然后保存属性)。

如何在测试厨房节点上启用 Ohai 插件?

尝试

client_rb:
    ohai.optional_plugins: [':Passwd']

我对你的问题没有确切的答案,但需要知道的是,当 运行测试厨房时,任何对被测菜谱中节点对象的引用都不会有来自一个 运行 下一个的实际节点对象,因为它没有被保存回任何 Chef 服务器。每个 运行 有点像 'clean slate'。您可以将节点对象保存到一个 运行 上的本地文件中,然后稍后再次访问它,但据我所知,在食谱中真的无法轻松地从测试厨房中更改 ohai 数据。你可以做这样的事情来保存它并在测试中得到它:

http://www.hurryupandwait.io/blog/accessing-chef-node-attributes-from-kitchen-tests

不确定这是否很有帮助,但我认为这个事实可能是相关的

我能够在最近的 Chef 版本 18.0.6 中使用 .kitchen.yml 中的以下内容:

provisioner:
  name: chef_zero
  client_rb:
    'ohai.optional_plugins = ':
        - :Passwd

在哈希键中包含 = 等号作为带引号的字符串 ('foo =': bar) 强制 test-kitchen 正确地模板化 client.rb

ohai.optional_plugins =  [:Passwd]