将变量传递给cloud-config chef?

时间:2015-01-09 20:30:03

标签: amazon-ec2 chef cloud-init user-data

我正在尝试使用主厨功能使用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"

1 个答案:

答案 0 :(得分: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