【问题标题】:ruby/chef: what is the purpose of the 'node' stanza?ruby/chef:“节点”节的目的是什么?
【发布时间】:2018-01-03 01:02:32
【问题描述】:

这是一个示例代码片段:

mwh_dir = "#{node['fmw']['middleware_home_dir']}"

我一直在使用这种语法,但无法在网上找到我为什么需要使用 node 节的详细信息。

如果有人可以解释node 在该代码中的用途。

注意:fmw 是在 .kitchen.yml 中定义的对象,middleware_home_dir 是在该对象中定义的变量。

【问题讨论】:

  • "如果有人能解释节点在该代码中的用途。"很明显,它引用了NodeNode#[] 委托给 Node::Attribute#[],它是 [Mash](Chef 的原生红宝石子类 Hash)的子类。因此,为了访问关于Node 实例的属性,您必须像在大多数情况下一样指定接收者(在这种情况下为node)调用方法([] 带有给定的键参数)。 node[key] 等同于 node.attributes[key]

标签: ruby chef-infra test-kitchen


【解决方案1】:

厨师node 是引用attributes 的一种方式。

本质上,node 可以用作Ruby Hash,它对您的配方代码公开可用。属性可以在.kitchen.yml 中设置,或者默认值可以在cookbook 的attributes/default.rb 文件中设置。这些属性将作为 node 变量中的哈希映射值提供。

【讨论】:

  • nodeNode。由Node#[] 委派的Node::Attribute 类似于Hash,但NodeObject,并且在上下文中与Hash 非常不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 2016-05-05
  • 1970-01-01
相关资源
最近更新 更多