下面按**“思路 + 落地步骤 + 常见做法”**给你一个用 Chef 做服务器变更控制的实战说明,偏运维可控、可审计、可回滚。
用 Chef 做服务器变更,本质不是“手动改服务器”,而是:
变更 = 改 Cookbook / Role / Environment → 提交 → 审核 → 推送到节点
✅ 好处
所有服务器配置都在 Chef Repo 中:
chef-repo/
├── cookbooks/
├── roles/
├── environments/
├── data_bags/
└── Policyfiles/
✅ 不允许:
/etcgit checkout -b change-nginx-timeout
# 修改 cookbook
git commit
git push
提交 Merge Request / Pull Request
✅ 审核内容:
用 Environment 控制变更范围:
# environments/staging.json
{
"name": "staging",
"cookbook_versions": {
"nginx": "= 2.1.0"
}
}
流程建议:
dev → staging → prod
✅ 禁止直接改 prod
chef-client
knife ssh 'role:web' 'sudo chef-client'
或
chef-client --once
chef-client --why-run
knife ssh 'role:web AND chef_environment:staging' 'sudo chef-client'
"nginx": "= 2.0.9"
再跑 chef-client
git revert <commit>
git push
| 时间 | 变更内容 | 审批人 | 影响范围 |
|---|
| 场景 | Chef 控制方式 |
|---|---|
| 改 Nginx 配置 | template + attribute |
| 加用户 | user / group 资源 |
| 改内核参数 | sysctl 资源 |
| 发版本 | deploy cookbook |
| 安全加固 | baseline cookbook |
服务器变更 ≠ 登录服务器改东西
服务器变更 = 改 Chef 代码 + 审核 + 推送
如果你愿意,我可以:
你现在是哪种服务器环境?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。