【问题标题】:How can a cookbook assign a Chef attribute based on whether a package is installed?食谱如何根据是否安装软件包来分配 Chef 属性?
【发布时间】:2017-11-29 19:32:21
【问题描述】:

我有一个特定的 Chef 属性,我想根据是否安装了一个包来改变它。例如:

if package X is installed
  default['attr1']['attr2'] = 'value1'
else
  default['attr1']['attr2'] = 'value2'
end

此属性随后用于在已制定的模板文件中设置某些值。

在网上寻找最佳方法后,我发现这绝对不是常见的做法。这让我想知道我是否也对我的问题采取了错误的方法。

所以我的全部问题是,确定包是否安装在 Chef 属性文件中的最佳方法是什么。不建议您根据系统的当前配置更改属性吗?如果不是,那为什么?

【问题讨论】:

    标签: ruby attributes package chef-infra


    【解决方案1】:

    Ohai 已经在运行开始时通过node['packages'] 为您完成了这项工作。一般来说,Chef 代码应该描述系统的期望状态,而不是对当前状态做出反应。在 Chef 自己的代码的深处,它必须执行测试和修复循环,但您的代码通常不需要这样做。详情请见https://coderanger.net/thinking/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多