gpt4 book ai didi

json - 更新 Opscode Chef 中的自动属性(serialized_object)

转载 作者:行者123 更新时间:2023-11-29 13:03:52 25 4
gpt4 key购买 nike

我的 Chef 服务器中有几个节点在引导时出现问题并且错过了 FQDN 和域自动属性,因此它们没有被 SOLR 索引并且不能被 knife 搜索。我无法重新启动这些机器,但想修复这个问题,我花了一段时间才这样做。因此,我发布这篇文章希望它能为其他人节省一些时间。

最佳答案

自动属性由 Chef 存储在数据库中,不能由 knife 编辑(请参阅 Chef 属性概述)。它们以十六进制形式存储在 Chef 的数据库中,作为节点表中名为 serialized_object 的列,实际上是一个 gzip 压缩的 JSON 字符串。

获取JSON字符串:

  • 使用 PostgreSQL 客户端连接到 chef PostgreSQL(您可以在/etc/chef-server/chef-server-secrets.json 中找到 chef 服务器上的凭据)
  • 将 serialized_object 的内容保存到文件 serialized_object.hex(它应该看起来像“\x1f8b08000...”)
  • 运行:xxd -p -r serialized_object.hex > serialized_object.gz
  • 运行:gunzip serialized_object.gz

现在文件 serialized_object 包含您可以编辑的 JSON 格式的属性。编辑后,您可以按照以下步骤将其内容存储回 Chef 服务器:

  • 运行:gzip serialized_object
  • 运行:xxd -p serialized_object.gz > serialized_object.hex
  • 现在您需要使用 PostgreSQL 客户端并使用以下查询插入十六进制数据(确保从十六进制字符串中删除前缀反斜杠和 x):

    更新节点集 serialized_object = decode('1f8b08000...','hex') where name = ''

希望这对某人有帮助:)

关于json - 更新 Opscode Chef 中的自动属性(serialized_object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20689625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com