Chef Frontend从12.17.33升级至14.5.29时upgrade命令报错咨询
Chef Frontend 12.17.33 升级至 14.5.29 报错排查方案
错误说明
你遇到的execute[oc_id_schema]执行失败报错是因为Chef将数据库schema相关操作标记为敏感资源,默认隐藏了具体错误输出,需要先开启详细日志定位根因。
排查&解决步骤
1. 复现报错获取详细日志
执行带debug日志级别的升级命令,输出完整错误信息:
CHEF_LICENSE='accept' chef-server-ctl upgrade -l debug
2. 常见根因及对应修复方法
- 数据库服务未启动:执行
chef-server-ctl stop会关停所有Chef服务,但升级过程需要postgresql数据库服务处于运行状态才能执行schema迁移。修复步骤:- 单独启动postgresql服务:
chef-server-ctl start postgresql - 确认服务状态正常:
chef-server-ctl status postgresql - 重新执行升级命令
- 单独启动postgresql服务:
- 跨大版本schema迁移冲突:12.x到14.x跨两个大版本,oc_id的数据库schema迭代存在断层,直接升级会触发迁移脚本兼容问题。修复步骤:
- 先全量备份Chef数据避免数据丢失:
chef-server-ctl backup --all - 手动触发oc_id服务重配置执行增量迁移:
chef-server-ctl reconfigure oc_id - 若仍报错可进入oc_id数据库查询当前schema版本,对照迁移脚本补全缺失项:
迁移脚本默认存放路径为# 进入oc_id数据库 chef-server-ctl psql oc_id # 查询当前已执行的schema迁移版本 SELECT * FROM schema_migrations;/opt/opscode/embedded/service/oc_id/db/migrate
- 先全量备份Chef数据避免数据丢失:
- 自定义数据目录权限异常:从报错信息可见你的Chef可执行文件存放于自定义路径
/data/opscode,需确认opscode用户对该目录及所有子目录有完整读写权限:chown -R opscode:opscode /data/opscode - 许可接收不生效:部分场景下环境变量传参的许可接收方式不生效,可提前执行命令接收许可后再升级:
chef-server-ctl accept-license
内容的提问来源于stack exchange,提问作者nandhakumar
相关产品推荐
相关产品推荐

