【问题标题】:Unable to define top level field "automatic" in a chef knife search node无法在厨师刀搜索节点中定义顶级字段“自动”
【发布时间】:2020-08-16 12:50:05
【问题描述】:

我想在命令行“刀搜索节点”中专门使用automatic_name:server。

任何关于如何实现这一点的建议,将不胜感激。

针对服务器进行编码时,node.automatic['name'] 可用。此外,当导出到 json 时,jq 查询显示自动是厨师中保存的服务器数据的一部分。所以,不知道为什么刀搜索节点不能自动识别/尊重。

下图说明自动声明时不返回寻刀。

# knife search node -i "automatic_name:server"
0 items found

# knife search node -i "name:server"
1 items found

# knife node show server -Fj -l > server.json
# jq '.automatic.name' server.json
"server"

提前致谢。 wcm

【问题讨论】:

  • @seshadri_c 感谢您的回复。我们能够找到导致自动属性中缺少名称属性的根本原因。 /etc/hosts 命令不正确。但是,我们刚刚遇到了与角色类似的问题。自 2015 年以来,已经有一张厨师服务器票在添加搜索顶级节点属性的能力。github.com/chef/chef-server/issues/303

标签: search chef-infra knife


【解决方案1】:

knife search 子命令搜索由 Chef 服务器“索引”的数据。多层(深)JSON structure 也被展平为顶层:

嵌套字段在 JSON 数据结构中显得更深。例如,信息。关于网络接口可能有好几层:node['network']['interfaces']['en1']。当 JSON 结构中存在嵌套字段时,Chef Infra Client 会将这些嵌套字段提取到顶层,将它们展平为支持通配符搜索模式的复合字段。

考虑一个节点在 JSON 中的以下“自动”属性:

  "automatic": {
    "kernel": {
      "os_info": {
        "truncated": "lines",
        "build_number": "17763",
        "code_set": "1252",
        "truncated": "lines"
      }
    }
  } 

如果我想搜索 build_numbercode_set,我会搜索它(如果)它在顶级可用:

~$ knife search node "build_number:17763"
1 items found

~$ knife search node "code_set:1252"
1 items found

在您的情况下,“自动”也受到尊重。 server 信息被展平到顶层,并且无需在其前面加上 automatic 前缀即可搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多