在 Chef 里,“回滚版本”通常取决于你使用的具体场景(Cookbook、Policy、Policyfile、节点环境等)。下面按最常见场景给你系统性说明。
version 固定旧版本(推荐)如果你之前上传过旧版本 Cookbook:
knife cookbook upload mycb -v 1.2.0
在 Policyfile 或 Environment 中指定旧版本:
name "myapp"
default_source :chef_server
cookbook "mycb", "= 1.2.0"
然后:
chef install
chef push prod
✅ 这是最干净、最可审计的回滚方式
{
"name": "production",
"cookbook_versions": {
"mycb": "= 1.2.0"
}
}
然后节点使用 production 环境:
knife node environment set node1 production
✅ 适合 Chef Server + Environment 模式
knife cookbook upload mycb --freeze
⚠️ 不推荐原因:
如果你使用 Policyfile:
chef show-policy myapp
chef rollback myapp prod 2
✅ 这是 Chef 官方推荐的回滚方式
knife node policy set NODE_NAME policy_name policy_group
或:
knife node environment set NODE_NAME old_env
knife cookbook list mycb
git tag v1.2.0
git checkout v1.2.0
--freeze 防止覆盖knife cookbook upload mycb --freeze
| 场景 | 做法 |
|---|---|
| 生产环境 | Policyfile + revision |
| 传统 Chef | Environment 锁定版本 |
| 快速回滚 | 指定旧 Cookbook 版本 |
| 可审计 | 永远保留旧版本 |
Chef 没有“自动回滚命令”,回滚 = 指定旧版本运行
如果你愿意,可以告诉我:
我可以给你精确到命令级别的回滚方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。