温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Chef如何回滚版本

发布时间:2026-07-18 03:14:12 来源:亿速云 阅读:98 作者:小樊 栏目:系统运维

Chef 里,“回滚版本”通常取决于你使用的具体场景(Cookbook、Policy、Policyfile、节点环境等)。下面按最常见场景给你系统性说明。


一、Chef Cookbook 回滚(最常见)

1️⃣ 方式一:使用 version 固定旧版本(推荐)

如果你之前上传过旧版本 Cookbook:

knife cookbook upload mycb -v 1.2.0

PolicyfileEnvironment 中指定旧版本:

Policyfile.rb

name "myapp"
default_source :chef_server

cookbook "mycb", "= 1.2.0"

然后:

chef install
chef push prod

这是最干净、最可审计的回滚方式


2️⃣ 方式二:使用 Environment 锁定版本

{
  "name": "production",
  "cookbook_versions": {
    "mycb": "= 1.2.0"
  }
}

然后节点使用 production 环境:

knife node environment set node1 production

✅ 适合 Chef Server + Environment 模式


3️⃣ 方式三:重新上传旧 Cookbook(不推荐)

knife cookbook upload mycb --freeze

⚠️ 不推荐原因:

  • 会覆盖版本
  • 不利于审计
  • 不容易追踪变更

二、Chef Policyfile 回滚(现代方式 ✅)

如果你使用 Policyfile

查看历史 revision

chef show-policy myapp

回滚到某次 revision

chef rollback myapp prod 2

这是 Chef 官方推荐的回滚方式


三、节点级别“回滚”

只影响单个节点

knife node policy set NODE_NAME policy_name policy_group

或:

knife node environment set NODE_NAME old_env

四、回滚失败时的补救策略

✅ 1. 保留旧版本 Cookbook(不要删)

knife cookbook list mycb

✅ 2. 使用 Git 管理 Cookbook

git tag v1.2.0
git checkout v1.2.0

✅ 3. 使用 --freeze 防止覆盖

knife cookbook upload mycb --freeze

五、Chef 回滚最佳实践 ✅

场景 做法
生产环境 Policyfile + revision
传统 Chef Environment 锁定版本
快速回滚 指定旧 Cookbook 版本
可审计 永远保留旧版本

六、总结一句话

Chef 没有“自动回滚命令”,回滚 = 指定旧版本运行


如果你愿意,可以告诉我:

  • ✅ 用的是 Chef Server / Chef Zero / Automate
  • ✅ 是否使用 Policyfile
  • ✅ 想回滚 Cookbook / Policy / 整台节点

我可以给你精确到命令级别的回滚方案

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI