Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打印或调试属性_Java_Ruby_Attributes_Chef Infra - Fatal编程技术网

Java 如何打印或调试属性

Java 如何打印或调试属性,java,ruby,attributes,chef-infra,Java,Ruby,Attributes,Chef Infra,我创建了一个带有属性的Chef cookbook,然后尝试将代码提升到节点,并传递附加属性和/或覆盖默认值 是否可以打印属性树以查看加载了哪些属性以及覆盖了哪些属性?您可以使用节点.debug\u value显示单个属性。这将在每个级别打印该属性的值。但是,在每个属性的每个级别执行此操作都比较困难(我不确定如何执行此操作)。此外,由于ohai提供的大量属性,我不确定您是否愿意这样做 如果您的厨师跑步正确完成,您可以执行刀节点显示-l(小写l)。这将向您显示实际值,但它提供了大量数据,并且不会告诉

我创建了一个带有属性的Chef cookbook,然后尝试将代码提升到节点,并传递附加属性和/或覆盖默认值


是否可以打印属性树以查看加载了哪些属性以及覆盖了哪些属性?

您可以使用
节点.debug\u value
显示单个属性。这将在每个级别打印该属性的值。但是,在每个属性的每个级别执行此操作都比较困难(我不确定如何执行此操作)。此外,由于ohai提供的大量属性,我不确定您是否愿意这样做


如果您的厨师跑步正确完成,您可以执行
刀节点显示-l
(小写l)。这将向您显示实际值,但它提供了大量数据,并且不会告诉您哪些值是默认值、正常值、覆盖值等。

要从聚合的Chef内部获取整个属性树,而不是通过Chef服务器获取,这在solo环境中是无用的,以一种有用的形式查看。有关详细信息,请参阅“”

要获得打印精美的日志,您可以使用Chef's JSON库的精美打印机:

output="#{Chef::JSONCompat.to_json_pretty(node.to_hash)}"
log output
或者将一个本地文件写入您的客户端:

output="#{Chef::JSONCompat.to_json_pretty(node.to_hash)}"
file '/tmp/node.json' do
  content output
end
请注意,这是聚合节点,因此您不会获得使用
节点.debug_value
可以获得的默认/override/etc.级别,但是如果您实际上不知道属性的名称/路径,或者需要循环使用多个属性,则这可能是您的朋友

您将得到一个巨大的结果,看起来像这个高度精简的示例:

{
  "chef_type": "node",
  "name": "node.example.com",
  "chef_environment": "_default",
  "build-essential": {
    "compile_time": false
  },
  "homebrew": {
    "owner": null,
    "auto-update": true,
  ...
  },
  "recipe": [
    "example"
  ],
  "run_list": [
    "recipe[example]"
  ]
}

“”拥有漂亮的打印机指针。

通过@keen给出答案,这将以YAML格式生成更具可读性的输出

output = node.to_yaml
file '/var/node.yaml' do
  content output
end

有时,在设置变量之后,从节点读取变量可能很容易

knife node edit <hostname-here> -a
刀节点编辑-a

@Tensibai的问题是公平的,Cherry正在尝试对厨师引导进行故障排除。你提供的链接是基本的,如果我是厨师的初学者,我会发现很难找到答案。这不是一个新的SO用户,所以如果你不喜欢这个问题,请直接投下一票。4个关于同一主题的问题是一个相当大的问题。在回顾之后,现在只剩下一个问题了,我的第一条评论没有什么兴趣,但是关于属性优先级的链接仍然有效。所以我怀疑是否要移除它。周一将重写所有@markoconnor(因为我在电话上没有完成,所以不确定“戳”)以扩展@Tejay的答案,并提供一些示例-对于
node['minecraft']['properties']
使用
node.debug_值('minecraft','properties')
了解更多详细信息-