在 Chef 里,“配置同步”通常指把基础设施配置(Cookbooks、Roles、Environments、Data Bags 等)从 Chef Server 同步到节点(Node),以及团队之间如何同步配置代码。下面从几个层次说明常见做法。
节点上运行 chef-client:
chef-client
同步流程:
自动同步方式:
0 * * * * /usr/bin/chef-client
interval 配置适合:
chef-solo -c solo.rb -j node.json
或:
chef-client -z
配置直接来自本地目录,没有 Server 同步概念。
knife cookbook upload my_cookbook
或者批量:
knife cookbook upload --all
团队成员通过 Git + knife 保持同步。
Policyfile 锁定 Cookbook 版本,保证同步一致:
name 'web_policy'
run_list 'my_cookbook::default'
cookbook 'my_cookbook', '1.2.3'
同步步骤:
chef install Policyfile.rb
chef push production Policyfile.lock.json
节点使用:
chef-client -n production
✅ 优势:
berks install
berks upload
⚠️ 新项目更推荐 Policyfile。
# environments/production.rb
name 'production'
default_attributes['nginx']['port'] = 80
上传:
knife environment from file environments/production.rb
节点绑定:
knife node environment set node1 production
knife data bag create secrets
knife data bag from file secrets db.json --secret-file secret.pem
节点解密使用:
data_bag_item('secrets', 'db')
✅ 避免明文同步密码
main:生产dev:测试chef cookstylechef exec rspecknife cookbook uploadGit Repo
↓
CI Pipeline
↓
Chef Server
↓
chef-client (节点定时)
Q:节点配置不同步?
chef-client 是否运行chef-client -l debugQ:Server 和本地 Cookbook 不一致?
如果你指的是:
可以告诉我具体场景,我可以给更针对性的方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。