TiDB v4.0.0 Ansible方式升级提示 'KeyError: ''deploy_dir'''

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】

【概述】在现有的V3.0.4版本基础上,使用Ansible方式,升级到V4.0.0时,提示 ‘KeyError: ‘‘deploy_dir’’’
【背景】现有TiDB集群中,TiKV存在单机多实例部署情况,使用Ansible方式,升级到V4.0.0。

【现象】使用4.0.0的ansible包进行deploy时,提示如下信息:


4.0.0的 inventory.ini 中关于TiKV配置信息如下:

【业务影响】

【TiDB 版本】当前版本V3.0.4,升级到V4.0.0

【附件】

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

  • 对应模块日志(包含问题前后1小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

这个看起来没什么问题
1、建议看看 inventory_check.py 62 是什么内容
2、检查一下 ansible 版本,和官网要求是否相符
3、可以尝试把 deploy_dir用引号 引起来

1、建议看看 inventory_check.py 62 是什么内容
62行是调用“parse_inventory”这个方法,在该方法内的24行,是获取tidb的deploy_dir,具体如下所示:


2、检查一下 ansible 版本,和官网要求是否相符
ansible的版本是2.5.0,用tidb的v3.0.4版本的ansible操作的是没问题的,所以ansible应该是OK的
3、可以尝试把 deploy_dir用引号 引起来
我分别尝试了将deploy_dir用单引号和双引号括起来,没有变化,报同样的错误

问题已经找到。
因为我存在单机双实例部署tikv的情况,故在 inventory.ini 的[all:vars]下没有指定统一默认的deploy_dir,而是根据标签指定了tikv的deploy_dir,如下图所示:


所以在升级时,因[all:vars]下没有统一的deploy_dir,所以需要在 [tidb_servers] 和 [pd_servers] 下指定具体的deploy_dir(在部署时,默认部署到/home/tidb/deploy目录下),如下图所示:

修改后,即可向下执行操作

1赞

点赞,:call_me_hand::+1::+1::+1:

麻烦把你的那个点击标记有用,有助于其他人遇到类似问题,快速搜到