Chef 是常用的基础设施自动化配置管理工具(Infrastructure as Code)。下面从架构设计、Cookbook 编写、环境管理、安全、测试与运维几个方面,总结 Chef 配置的最佳实践。
✅ 建议:
chef-solo / chef-client --local-mode(不推荐长期)推荐结构:
cookbooks/
myapp/
recipes/
attributes/
templates/
files/
libraries/
tests/
✅ 最佳实践:
resource_name :myapp_service
property :version, String, required: true
action :install do
package 'myapp' do
version new_resource.version
end
end
✅ 好处:
❌ 不推荐:
node.default['port'] = 8080
✅ 推荐:
attributeswhy-run 和幂等性chef-client --why-run
environment 'production' do
cookbook 'myapp', '= 1.2.0'
end
✅ 建议:
Policyfile 比 Role + Environment 更可控:
name 'myapp'
run_list 'myapp::default'
cookbook 'myapp', '1.2.0'
✅ 优点:
knife data bag create secret --secret-file secret.pem
✅ 禁止:
推荐测试栈:
示例:
cookstyle
chefspec
kitchen test
❌ 在 recipe 里写 shell 命令滥用 execute
❌ 一个 Cookbook 配置整个系统
❌ 手动修改节点后忘记写回代码
❌ 把密码写进 attribute
Chef 的最佳实践 = 单一职责 Cookbook + Policyfile 管理 + 敏感数据加密 + 全流程测试 + 不可变基础设施理念
如果你需要,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。