1

我正在尝试使用厨师功能创建一个带有 cloud-init 的用户数据脚本。我遇到了限制,我想知道是否有解决方法。我需要我的节点名称是唯一的,因为厨师服务器将只接受具有唯一名称的客户端。我尝试了几种方法来传递日期时间变量或实例 ID,但我似乎无法将变量传递给 node_name 部分。

node_name: "server-app-$INSTANCE_ID"

或者

node_name: "server-app-$(date +%s)"

有没有办法避免这种情况,使其不会被字面解释?

Chef encountered an error attempting to create the client "server-app-$INSTANCE_ID"
4

1 回答 1

0

在写出以下内容之前,您必须进行扩展client.rb

echo "node_name '$(date +%s)' >> /etc/chef/client.rb"

并不是说如果两台机器在同一秒内启动,这仍然会发生冲突。我强烈建议改用 EC2 实例 ID 或 IP 地址。您可以从元数据服务器获取这些。有关示例,请参见https://github.com/coderanger/brix/blob/master/packer/client-bootstrap.sh#L26-L37 。

于 2015-01-09T21:25:29.430 回答