如何解决错误同步Cookbook:?

问题描述 投票:0回答:1

当我们在其中一个节点上运行chef-client时,我们在Synchronizing Cookbooks:结束时收到错误,说Error Syncing Cookbooks:没有进一步的消息。我们可以做些什么来进一步诊断此错误?

chef knife cookbook berkshelf
1个回答
0
投票

您可以首先将-l debug标志添加到chef-client运行中。这会将调试级别的日志记录写入/var/log/chef/client.log

例如:[2019-02-22T19:16:16+00:00] DEBUG: HTTP 1.1 404 Not Found

由于此404错误意味着在服务器上找不到文件,我们可以登录到chef-server并查看哪些文件不可用。在chef-server上运行chef-server-ctl tail以从所有正在运行的服务中尾随日志。在您的客户端上再次运行chef-client,您应该在chef-server上获得更多消息。

以下是nginx access.log中的示例:

==> /var/log/opscode/nginx/access.log <== [22/Feb/2019:21:25:06 +0000] "GET /bookshelf/organization-c1573b41a76ea22b9eb7c36d939fcad4/checksum-bfacb2422a1078b91660f763f0842e8d HTTP/1.1" 404 "0.002" 173 "-" "Chef Client/12.19.36 (ruby-2.3.1-p112; ohai-8.23.0; x86_64-linux; +https://chef.io)" "127.0.0.1:4321" "404" "0.002" "12.19.36" "algorithm=sha1;version=1.1;" "dev" "2019-02-22T21:25:06Z" "" 1265

这让我们知道书架中的特定校验和丢失了。没有简单的方法将其与相应的cookbook相关联,但您可以进行psql数据库查询,以确定导致问题的菜谱。从chef-server.rb文件中获取您在厨师服务器上的psql凭据:cat /etc/opscode/chef-server.rb

psql查询使用404错误消息行中的校验和:

select name from cookbooks, cookbook_versions, cookbook_version_checksums where cookbooks.id = cookbook_versions.cookbook_id and cookbook_versions.id = cookbook_version_checksums.cookbook_version_id and checksum = 'bfacb2422a1078b91660f763f0842e8d';

现在我们有了食谱名称,我们可以增加食谱版本号并重新上传到厨师服务器。然后客户端能够找到新的cookbook版本并解决了404错误。

© www.soinside.com 2019 - 2024. All rights reserved.