【问题标题】:Referencing node attributes from Chef Audit Control Group从 Chef Audit Control Group 引用节点属性
【发布时间】:2018-01-03 06:13:59
【问题描述】:

我正在尝试找出在审核模式下运行时是否可以在 Chef Control Group 中引用我的节点属性。例如,我有一个特定的配方,它引用了我的 http(s) 代理的属性,我需要通过我的审核确保代理服务器设置正确。

所以,我想检查我的代理配置文件的内容,并确保它在文件中具有适当的代理服务器。但我目前无法验证这一点,因为当我引用时审核模式似乎无法识别:

node['default']['proxy_server']

"#{node['default']['proxy_server']}"

在审计模式下不能引用属性吗?还是只有我不知道的超级秘密语法?谢谢!!

【问题讨论】:

  • 您指的是哪种审核模式,旧的“审核模式”还是新的审核指南?
  • 使用旧的审计模式。 'Chef::Config[:audit_mode] = :audit_only

标签: chef-infra audit


【解决方案1】:

您应该能够将节点属性填充到全局变量或类似变量中,并从审计控件内部访问它们。但不推荐,因为 1) 如果您对代码和测试使用相同的参数,那么这种测试点就会失败;2) 使用更新的基于 InSpec 的工具(如审计手册或合规性)是不可能的。

【讨论】:

  • 所以,如果我理解正确的话....除非我基本上将这些值硬编码到配方中的变量中,否则真的无法做到吗?
  • 再一次,可以做到,但不应该。测试的重点是与已知的输出值进行比较。如果您有一些代码执行x = y,然后通过检查x == y 对其进行测试,那么您实际上并没有检查x 的总体值是否正确。
  • 您知道是否有更稳健的方式来运行审计,例如强化合规性?例如,一种情况是 grub 配置文件必须具有某些权限......但是配置文件的路径/名称在 AmazonLinux 和 RHEL 之间是不同的......这就是为什么我希望使用这些属性来传递路径/文件名的值。
  • 我试图按照Chef.io 的示例进行操作,该示例显示了一个控制块前面是基于属性设置变量:memory_mb = node['memory']['total'].gsub(/kB$/i, '').to_i / 1024 control 'minimum memory check' do it 'should be at least 400MB free' do expect(memory_mb).to be >= 400 end end
  • 您通常会将操作系统检查放在控件本身中,尽管 Serverspec(您正在使用的)和 InSpec(所有新事物使用的)之间的细节有所不同。
猜你喜欢
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多