我可以使用以下命令向我的托管主厨服务器运行“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或除客户名称之外的任何名称。我错过了什么?
谢谢, 摩
答案 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
有关更多信息,请查看官方文档: