2014-10-08 94 views
1

当我为主机生成新客户端密钥并将其放入/etc/chef/client.pem时,我的厨师客户端运行顺利,除结束状态始终标记为“Chef Client失败”。我相信这是节点试图在主服务器上自行更新的节点数据,并且不知何故数据需要旧的client.pem文件。厨师客户端重新注册打破节点数据保存回厨师服务器的能力

为了让更多的上下文:

  1. 我的主机磁盘的模具,它被重新成像。一旦安装了操作系统,我需要与主厨一起启动。
  2. 我宁愿不改变与这个节点相关的角色。因此,我的自动化在主机安装后从安全服务器复制validation.pem,headless_admin.pem并执行其余的'DELETE/clients/clientname'。我不'DELETE/nodes/nodename',因为我想保留与nodename相关的角色。
  3. 运行厨师客户端现在可以生成一个新的client.pem文件(类似于从工作站做一个“刀子客户重新注册客户端名”。
  4. 然而,尽管这个厨师的客户端运行收敛的预期,这在捞出与一个失败的国家结束。启用调试模式不提供任何更多的信息。我强烈怀疑这是失败的节点尝试厨师服务器上更新其保存的状态。

有没有一种方法,使客户端忽略对client.pem的任何改变并更新其节点状态(没有这种情况,重新注册的整个概念似乎毫无意义)

感谢您的阅读和对此的任何见解

回答

1

假设您正在使用Enterprise Chef或新Chef Server 12,则需要修复节点对象上的ACL。默认情况下,当客户端首先创建自己的节点对象时,它会继承对它的写入权限。在旧的开放源代码服务器(11)中,此检查更简单,客户端和节点的名称必须匹配,但ACL系统稍微复杂一些。你可以通过knife-acl解决这个问题。

+0

我没有尝试过这种行为与厨师11,新鲜重新创建的客户端不能访问其具有相同名称的旧节点(没有真正挖掘原因)。我们通过导出节点对象并在客户端注册后重新导入它来解决这个问题。 – Tensibai 2014-10-08 07:55:03

+0

@Tensibai - 你会分享如何导出节点对象。是否为每个节点对象备份(覆盖以前的保存)并在主机需要重新注册时进行恢复(例如,在重新映像之后) – faheem 2014-10-08 17:44:21

+0

@coderanger - 感谢指针。我正在研究这个。我们使用企业厨师 – faheem 2014-10-08 17:46:13