2

我想在测试厨房的节点中启用 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 插件?

4

3 回答 3

1

尝试

client_rb:
    ohai.optional_plugins: [':Passwd']
于 2020-06-09T07:20:27.820 回答
1

我对您的问题没有确切的答案,但要知道的一件事是,在运行测试厨房时,对被测配方中节点对象的任何引用都不会具有从一次运行到下一次运行的实际节点对象,因为它没有被保存回任何厨师服务器。每次运行都是一种“干净的石板”。您可以在一次运行时将节点对象保存到本地文件中,然后稍后再次访问它,但据我所知,实际上无法在食谱中轻松地从测试厨房中更改 ohai 数据。您可以执行以下操作来保存它并在测试中获取它:

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

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

于 2020-12-08T01:19:56.263 回答
1

我能够在最近的 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]
于 2022-01-18T01:37:28.877 回答