You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Chef 11.x的Recipes与Data Bags复制至新实例

我之前处理过好几次类似的Chef跨实例迁移场景,给你分享几个最靠谱的方案,按复杂度和可靠性排序:

方案一:用Knife工具批量导出/导入(推荐)

这是最标准的官方做法,操作高效且不容易出错,前提是你能同时访问新旧两个Chef实例的API。

步骤1:从旧实例导出内容

首先配置好旧Chef实例的knife客户端(确保knife configure已完成,能正常连接旧服务器):

  • 导出所有Recipes所在的Cookbooks:
    knife cookbook download --all --directory ./old_cookbooks
    
    这个命令会把所有Cookbook下载到当前目录的old_cookbooks文件夹,包含所有版本的Recipes、模板和资源文件。
  • 导出所有Data Bags:
    knife data bag download --all ./old_databags
    
    所有Data Bag的内容会被保存到old_databags目录下,每个Data Bag对应一个子文件夹,里面是各个Item的JSON文件。

步骤2:导入到新实例

接下来切换到新Chef实例的knife配置(可以修改~/.chef/knife.rb或者指定--config参数):

  • 上传所有Cookbooks:
    knife cookbook upload --all --cookbook-path ./old_cookbooks
    
    注意:如果新实例已有同名Cookbook,可加--force参数覆盖,但建议先确认版本差异再操作。
  • 导入所有Data Bags:
    先创建对应的Data Bag容器(新实例无对应容器时需要执行):
    for bag in $(ls ./old_databags); do knife data bag create $bag; done
    
    然后逐个上传Data Bag Item:
    for bag in $(ls ./old_databags); do
      for item in $(ls ./old_databags/$bag); do
        knife data bag from file $bag ./old_databags/$bag/$item
      done
    done
    
方案二:手动备份文件+重新上传(适合环境受限场景)

如果因为网络或权限问题没法用knife跨实例操作,可以直接从旧Chef服务器的文件系统备份:

  • Recipes/Cookbooks:旧Chef 11.x的Cookbooks默认存储在/var/chef/cookbooks目录(默认安装路径),直接打包该目录:
    tar -czf cookbooks_backup.tar.gz /var/chef/cookbooks
    
    把压缩包传到新服务器后解压,再用knife cookbook upload上传到新实例。
  • Data Bags:旧Chef的Data Bag数据存储在/var/chef/data_bags目录,同样打包复制到新服务器,然后用knife data bag from file命令逐个导入。
必须注意的关键细节
  • 加密Data Bags:如果你的Data Bags有加密(依赖encrypted_data_bag_secret),一定要把旧实例的秘钥文件(默认路径/etc/chef/encrypted_data_bag_secret)复制到新实例的相同路径,否则导入后无法解密内容。
  • Cookbook依赖检查:导出后记得检查每个Cookbook的metadata.rb文件,确认依赖的其他Cookbook是否也一起导出,避免新实例出现依赖缺失问题。
  • 权限设置:新实例中用来上传内容的Chef客户端(比如admin用户)必须拥有create和updateCookbook、Data Bag的权限,否则会报错。
  • 版本兼容性:Chef 11.x的Cookbook大多能兼容新版本Chef服务器,但如果新实例是Chef 13+,可能需要检查一些过时的资源语法(比如ruby_block的旧写法),提前做兼容性调整。

内容的提问来源于stack exchange,提问作者OldBloke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:02:38