OpenStack Trove创建数据库实例报错"Invalid key_name provided"求助
问题根因
Trove创建实例时会使用配置文件中[service_credentials]段定义的trove服务账号(属于service项目)调用Nova接口创建云主机,你配置的nova_keypair = trove-mgmt需要存在于service项目下trove用户的密钥对列表中。你之前验证的admin、demo用户名下的密钥对和Trove调用时使用的身份不匹配,因此依然报错。
解决步骤
- 第一步:切换到Trove服务对应的身份环境,确认密钥对是否存在
# 导入trove服务账号的环境变量 export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=service export OS_USERNAME=trove export OS_PASSWORD=pass # 替换为你trove用户的实际密码 export OS_AUTH_URL=http://control:5000/identity/v3 export OS_REGION_NAME=RegionOne export OS_IDENTITY_API_VERSION=3 # 查看当前账号的密钥对列表 openstack keypair list
- 第二步:根据查询结果选择对应处理方案,二选一即可:
- 保留密钥对配置:如果查询结果中没有
trove-mgmt,将已有的公钥导入到当前trove服务账号下:
openstack keypair create --public-key /path/to/你的/trove-mgmt公钥文件路径 trove-mgmt- 不需要密钥对配置:直接注释掉
/etc/trove/trove.conf中的nova_keypair = trove-mgmt配置项,Trove创建实例时就不会携带key_name参数。
- 保留密钥对配置:如果查询结果中没有
- 第三步:修改配置后重启所有Trove服务生效:
systemctl restart openstack-trove-api openstack-trove-taskmanager openstack-trove-conductor
- 第四步:重新执行Trove实例创建命令验证问题是否解决。
排查补充
如果操作后仍报错,可以查看Nova侧的api日志,确认收到的创建实例请求中携带的key_name值、请求所属的用户和项目信息,进一步定位不匹配的原因。
内容的提问来源于stack exchange,提问作者user495431
相关产品推荐
相关产品推荐

