我按照教程here来引导并将节点注册到厨师服务器。该实例位于自动缩放组中,这就是我选择此方法进行自举的原因。 场景是 - 我使用client.rb,validation.pem,trusted_certs从s3到新启动的实例通过userdata。
client.rb
log_location STDOUT
chef_server_url "https://chef.myserver.org/organizations/org"
validation_client_name "org-validator"
# Using default node name (fqdn)
trusted_certs_dir "/etc/chef/trusted_certs"
在命令执行后下载所需文件后,以$ INSTANCE_ID作为node_name运行chef-client。
chef-client -N $ INSTANCE_ID -j /etc/chef/first-boot.json
初始引导成功,节点注册到chef-server,instance-id为node-name,但在运行后续的chef-client时,它失败并显示错误:
ERROR: 401 "Unauthorized"
这是由于client.rb中不存在node_name。 如何在第一个chef-client运行期间在client.rb中输入node_name?
答案 0 :(得分:0)
这通常在userdata脚本或配置中处理,即echo "node_name '$HOSTNAME'" >>/etc/chef/client.rb
。具体细节可能因您的命名方案而异,有时您会对$HOSTNAME
进行一些字符串编辑或完全使用其他名称。这不是严格要求的,但是在配置文件中没有名称,Chef使用系统的当前FQDN,并且听起来像初始Chef运行中的某些内容更改了FQDN。另一个选择就是不这样做。