好的,这开始了,因为我试图让自动缩放的节点向Chef自动注册。我的client.rb文件中包含以下内容:

node_name "some_prefix-#{`hostname`}"

这个想法是,每个节点都将具有相同的前缀,但具有基于主机名的后缀。可悲的是,hostname返回一个在其末尾带有\n的字符串。 Chef很高兴让我创建此客户端,但是它实际上无法以任何方式访问它。
knife client show some_prefix-myHostname
knife client show "some_prefix-myHostname\n"
knife client show "some_prefix-myHostname%0A"

这三个都导致404
knife client list

确实显示了客户端,并在其后显示了一个空白的换行符。

我已经修复了client.rb模板,但是无法摆脱使用换行符创建的节点的名称。我试过使用刀子,webui,甚至使用irb中的Chef::REST库手动进行尝试,但所有操作都导致404。

有任何想法吗?

编辑:
我也尝试过knife client bulk delete,但是也失败了。看起来REST库会在尝试发送请求之前清理URL并删除换行符。

最佳答案

您可以尝试使用knife raw,它可以将请求直接发送到Chef Server API

knife raw /nodes/<node-name>
knife raw delete -m /nodes/<node-name>

这对我解决了类似的角色名称无效问题。

10-04 14:52