Chef infra Chef客户端重新注册中断了将节点数据保存回Chef服务器的功能

Chef infra Chef客户端重新注册中断了将节点数据保存回Chef服务器的功能,chef-infra,knife,Chef Infra,Knife,当我为主机生成新的客户端密钥并将它们放入/etc/chef/client.pem中时,我的chef客户端运行正常,但最终状态总是标记为“chef client failed”。我相信这是节点试图在chef服务器上为自己更新的节点数据,并且不知何故,该数据需要旧的client.pem文件 要提供更多上下文: 我的主机磁盘死了,它被重新映像。一旦安装了操作系统,我需要用chef引导它 我宁愿不触及与此节点关联的角色。因此,在主机安装后启动的我的自动化复制了validation.pem(从安全服务器复

当我为主机生成新的客户端密钥并将它们放入/etc/chef/client.pem中时,我的chef客户端运行正常,但最终状态总是标记为“chef client failed”。我相信这是节点试图在chef服务器上为自己更新的节点数据,并且不知何故,该数据需要旧的client.pem文件

要提供更多上下文:

  • 我的主机磁盘死了,它被重新映像。一旦安装了操作系统,我需要用chef引导它
  • 我宁愿不触及与此节点关联的角色。因此,在主机安装后启动的我的自动化复制了validation.pem(从安全服务器复制),这是一个headless_admin.pem,并执行rest“DELETE/clients/clientname”。我不“删除/nodes/nodename”,因为我想保留与nodename关联的角色
  • 运行chef client现在会生成一个新的client.pem文件(类似于从工作站执行“刀子客户端重新注册clientname”)
  • 但是,尽管此chef客户端运行会按预期聚合,但最终会以失败状态退出。启用调试模式不会提供更多信息。我强烈怀疑这是失败的,因为节点尝试更新其在chef服务器上保存的状态
  • 是否有一种方法可以使客户端忽略对client.pem的任何更改并更新其节点状态(没有这种方法,重新注册的整个概念似乎毫无意义)


    感谢您的通读和对这方面的任何见解假定您使用的是Enterprise Chef或新的Chef Server 12,您需要修复节点对象上的ACL。默认情况下,当客户端首次创建自己的节点对象时,它会继承对它的写访问权。在旧的开源服务器中(11)这个检查比较简单,客户端和节点的名称必须匹配,但是ACL系统要复杂一些。你可以通过
    刀ACL

    来解决这个问题。我用chef 11做过这种行为的实验,一个新创建的客户端不能用相同的名称访问它的旧节点(没有真正挖掘原因)。我们通过导出节点对象并在客户端注册后重新导入来解决此问题。@Tensibai-您是否可以分享导出节点对象的方式。您是否为每个节点对象备份(覆盖以前的保存)并在主机需要重新注册时从中恢复(例如重新映像后)@coderanger-谢谢你的指点。我正在研究这个问题。我们正在使用EnterpriseChef@faheem在重新映像一个简单的刀节点show-F json>node.json和一个刀节点delete和client delete之前,一旦从文件node.json重新注册了一个刀节点,您就可以像往常一样回来了。@faheem我确实错过了您对coderanger的回答,我正在使用Open Source chef server(很抱歉忘了提及),对于enterprise chef,coderanger必须使用
    刀acl回答问题(因为如果不重新创建acl,重新创建节点将无法正常工作)