【问题标题】:Passing node attributes into chef-apply将节点属性传递给 chef-apply
【发布时间】:2015-02-04 20:29:26
【问题描述】:

有没有办法将属性传递到食谱的厨师应用运行中?

我的食谱的第一行是:

if node[:my_attr][:enabled]

导致:

NoMethodError: undefined method '[]' for nil:NilClass

当我跑步时

chef-apply recipes/default.rb

attributes/default.rb 中添加适当的属性并不能解决此问题,为node[:my_attr] = {} 添加初始化也不能解决此问题。

如何将节点属性传递给厨师应用运行?

【问题讨论】:

  • 任何答案对您有用吗?请不要忘记将答案标记为正确! :)

标签: ruby chef-infra chef-recipe


【解决方案1】:

在属性/default.rb 声明

default['my_attr']['enabled']= "value"

那么您就可以在您的食谱中访问它们

您还可以使用 chef-client -j 选项传递属性的值。

【讨论】:

  • 我在我的 attributes/default.rb 中定义了那个我没有尝试过 -j 选项。它适用于 chef-apply 吗?
  • -j 选项不能与 chef-apply 一起使用(这是我的错误)。您面临的问题是什么?你的属性没有反映在配方中?
  • 通过 chef-apply 运行时,我的 attributes/default.rb 中定义的所有属性都不会传播到我的食谱中。在配方顶部手动定义它们确实有效,但我想尽可能避免这样做,以便配方可以通过厨师应用和普通厨师运行。
【解决方案2】:

亚伯拉罕 P 说得对。 chef-apply 很像一个 shell 脚本解释器。你甚至可以散列你的文件。

#!/usr/bin/env chef-apply

# define attributes here

# create chef resources and other valid chef/ruby code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多