chef-client节点名称必须与客户端名称相同?

时间:2014-12-08 14:11:59

标签: chef

我可以使用以下命令向我的托管主厨服务器运行“chef-client”命令:

  

sudo chef-client -c /etc/chef/knife.rb -o'role [webserver]'

和这个knife.rb文件:

 node_name                "my_client_name"  
 client_key               "#{current_dir}/my_client_name.pem"
 validation_client_name   "XXXXX-validator"
 validation_key           "#{current_dir}/XXXXX-validator.pem"  
 chef_server_url          "https://api.opscode.com/organizations/XXXXX"

但是,当我尝试在文件中使用不同的节点名称或在命令中使用-N时,我得到:

  

Chef尝试加载节点数据时遇到错误   “aaaa”无法向厨师服务器(http 401)进行身份验证   用户或客户'aaaa'

的签名无效

似乎只有当节点名称与客户端名称相同时,命令才能成功运行。

我想我错过了一些东西,但我希望将NODE名称作为$ HOSTNAME或除客户名称之外的任何名称。我错过了什么?

谢谢, 摩

1 个答案:

答案 0 :(得分:2)

当您在托管主厨上引导新节点时,您基本上会创建客户端和节点。

官方文档节点是:

any physical, virtual, or cloud machine that is configured to be maintained by a chef-client

客户端用于与Chef服务器进行身份验证(用RSA公钥对表示)。

因此,默认情况下,客户端和节点名称是相同的,因此您无法在运行时更改名称。

要更改它,您必须使用bootstrap命令销毁当前节点并创建一个新节点,或者使用以下命令手动创建节点和客户端:

  knife client create #{name} --file client_keys/#{name}.pem -d
  knife node create #{name} -u #{name} -k client_keys/#{name}.pem -d

有关更多信息,请查看官方文档: