我有3个组件:节点,服务器和工作站。我没有设置这些。我可以从工作站运行刀状态并返回当前结果(我相信这确认了从工作站到服务器的连接)。我可以从节点本身成功运行chef-client(我相信这确认了从节点到服务器的连接+显然它已经被引导)。
但是再次尝试引导失败了。我发现奇怪的一件事是我注意到工作站上的/etc/chef/client.rb文件将其node_name行替换为我正在尝试引导的节点的名称。也许那是正常的?
我无法理解的一件事是,这个错误使它看起来像/某人/无法连接到厨师服务器;但是,如上所述,我确认工作站和节点都可以验证并连接到厨师服务器。
我一直在查看文档,但是一个很大的问题就是模棱两可。它会说“有些东西位于/etc/chef/client.rb” - 好的,但在节点,服务器或工作站上?他们都有这个文件!!
我认为它可能是我的密钥,它通过“client_key”行在工作站上的〜/ .chef / knife.rb中指示 - 但我不想改变它,以免我失去与服务器的连接。但似乎很明显,某个地方存在身份验证故障 - 我无法在任何地方找到它,但在引导期间。
[root@workstation chef]# cat client.rb
log_location STDOUT
chef_server_url "https://chefserver/organizations/domain"
validation_client_name "domain-validator"
node_name "workstation"
ssl_verify_mode :verify_none
trusted_certs_dir "/etc/chef/trusted_certs"
[root@workstation chef]# knife bootstrap node.domain.goes.here -N node -x user -i /home/user/.ssh/id_rsa --sudo --use-sudo-password --node-ssl-verify-mode none -r recipe[chef-client]
Doing old-style registration with the validation key at ~/.keys/domain-validator.pem...
Delete your validation key in order to use your user credentials instead
Connecting to node.domain.goes.here
node.domain.goes.here -----> Existing Chef installation detected
node.domain.goes.here Starting the first Chef Client run...
node.domain.goes.here Starting Chef Client, version 12.10.24
node.domain.goes.here
node.domain.goes.here ================================================================================
node.domain.goes.here Chef encountered an error attempting to load the node data for "node"
node.domain.goes.here ================================================================================
node.domain.goes.here
node.domain.goes.here Authentication Error:
node.domain.goes.here ---------------------
node.domain.goes.here Failed to authenticate to the chef server (http 401).
node.domain.goes.here
node.domain.goes.here Server Response:
node.domain.goes.here ----------------
node.domain.goes.here Invalid signature for user or client 'node'
node.domain.goes.here
node.domain.goes.here Relevant Config Settings:
node.domain.goes.here -------------------------
node.domain.goes.here chef_server_url "https://chefserver/organizations/domain"
node.domain.goes.here node_name "node"
node.domain.goes.here client_key "/etc/chef/client.pem"
node.domain.goes.here
node.domain.goes.here If these settings are correct, your client_key may be invalid, or
node.domain.goes.here you may have a chef user with the same client name as this node.
node.domain.goes.here
node.domain.goes.here Platform:
node.domain.goes.here ---------
node.domain.goes.here x86_64-linux
node.domain.goes.here
node.domain.goes.here
node.domain.goes.here Running handlers:
node.domain.goes.here [2016-12-13T13:51:26-05:00] ERROR: Running exception handlers
node.domain.goes.here Running handlers complete
node.domain.goes.here [2016-12-13T13:51:26-05:00] ERROR: Exception handlers complete
node.domain.goes.here Chef Client failed. 0 resources updated in 01 seconds
node.domain.goes.here [2016-12-13T13:51:26-05:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
node.domain.goes.here [2016-12-13T13:51:26-05:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
node.domain.goes.here [2016-12-13T13:51:26-05:00] ERROR: 401 "Unauthorized"
node.domain.goes.here [2016-12-13T13:51:26-05:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
[root@workstation chef]# cat client.rb
log_location STDOUT
chef_server_url "https:/chef/organizations/domain"
validation_client_name "domain-validator"
node_name "node"
ssl_verify_mode :verify_none
trusted_certs_dir "/etc/chef/trusted_certs"
答案 0 :(得分:1)
您的组织中可能已经有一个与该名称匹配的客户端。通过knife client delete
删除它。
答案 1 :(得分:1)
我的理解是您尝试使用新名称重新启动,但这无效。
该节点已经被引导,并且已经有一个客户端的client.pem文件,其名称为old-name
。
Chef不会尝试在您的问题中注册名为new_name
(node
)的新客户端,因为client.pem就在这里。但它会使用new_name
,结果是客户new_name
正在尝试使用其他人的密钥进行身份验证。
对于chef-server,new_name
不存在,因此无法对其进行身份验证。
我不确定你为什么要再次引导,所以有两个解决方案:
knife ssh -x user -i /home/user/.ssh/id_rsa 'name:old_name' 'sudo chef-client -r 'new_runlist'
来实现此目的。要删除client.pem,您也可以通过knife ssh来完成。
要在命令行中传递密码,请参阅this Q/A on superuser,如果您没有使用空格预先打开两个命令,请注意密码将显示在进程列表和shell历史记录中。
答案 2 :(得分:0)
再次引导时,我遇到了类似的问题。调试后,我发现它是在第一次完成(引导)时在节点的etc文件夹中创建的Chef文件。我删除了该文件夹并再次引导。它对我有用。