最近在学习使用OpenStack的时候需要用到多个域(domain),于是从命令行创建了新的域 domain-test-1、项目 projext-test-1和用户 user-test-1。测试发现,从命令行登录没有问题,但是从 OpenStack控制面板登录的时候却总是登陆失败,检查日志的时候发现了一条线索:
从日志可以看出,用户 user-test-1登录的是系统的默认域 Default,而不是我为其创建的 domain-test-1,但 Default域中并没有user-test-1用户,所以会导致登录失败。
查阅资料后发现,OpenStack的控制面板项目(horizon)下有一个 local_settings配置文件:
这个配置文件中包含一条名为 OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT的参数,它的作用是开启 horizon和 keystone的多域支持,其默认值为False,即多域支持默认是被关闭的:
先将其修改为 True,然后重启 horizon服务:
docker restart horizon
再打开控制面板登录页面,发现与之前的页面有所不同,多了一项“域”的输入框。
这是修改配置文件之前的登录页面:
这是修改配置文件之后的登陆页面:
输入各项参数成功登录之后,发现在页面左上角显示了当前使用的域和项目:
点击后弹出选项框,可以选择所要显示的项目:
至此,OpenStack控制面板多域支持配置完毕。
参考文档: