安装认证服务 Keystone
Keystone 架构介绍
新建数据库
| |
MariaDB启动不成功: 错误信息:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2 “No such file or directory”) 错误原因:openstack.cnf配置文件出了问题,我将两台机的IP弄反了,自然就绑定不了地址。 解决方法:修改openstack.cnf后重启MariaDB服务systemctl restart mariadb。
新建 keystone 数据库并赋予 keystone 用户权限:
将
KEYSTONE_DBPASSWORD替换为希望设置的keystone密码。
安装配置组件
| |
编辑 keystone 配置文件 /etc/keystone/keystone.conf :
注释掉这几个字段中其他的设置;
KEYSTONE_DBPASSWORD要更改成自己设定的密码。
同步数据库:
| |
数据库同步失败: 错误信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28Traceback (most recent call last): File "/usr/bin/keystone-manage", line 6, in <module> from keystone.cmd.manage import main File "/opt/stack/keystone/keystone/cmd/manage.py", line 32, in <module> from keystone.cmd import cli File "/opt/stack/keystone/keystone/cmd/cli.py", line 32, in <module> from keystone.common.sql import migration_helpers File "/opt/stack/keystone/keystone/common/sql/migration_helpers.py", line 21, in <module> from oslo_db.sqlalchemy import migration File "/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/migration.py", line 45, in <module> from migrate.versioning import api as versioning_api File "/usr/lib/python2.7/site-packages/migrate/versioning/api.py", line 33, in <module> from migrate.versioning import (repository, schema, version, File "/usr/lib/python2.7/site-packages/migrate/versioning/repository.py", line 13, in <module> from migrate.versioning import version, pathed, cfgparse File "/usr/lib/python2.7/site-packages/migrate/versioning/version.py", line 10, in <module> from migrate.versioning import pathed, script File "/usr/lib/python2.7/site-packages/migrate/versioning/script/__init__.py", line 6, in <module> from migrate.versioning.script.sql import SqlScript File "/usr/lib/python2.7/site-packages/migrate/versioning/script/sql.py", line 7, in <module> import sqlparse File "/usr/lib/python2.7/site-packages/sqlparse/__init__.py", line 14, in <module> from sqlparse import filters File "/usr/lib/python2.7/site-packages/sqlparse/filters/__init__.py", line 20, in <module> from sqlparse.filters.reindent import ReindentFilter File "/usr/lib/python2.7/site-packages/sqlparse/filters/reindent.py", line 10, in <module> from sqlparse.utils import offset, indent ImportError: cannot import name offset错误原因:同台电脑之前安装过
DevStack,pip包没有更新导致。 解决方案:卸载sqlparse再重装。
初始化、启动 keystone 认证服务:
| |
ADMIN_PASSWORD字段需要更改为所需要的密码。
配置 Apache HTTP 伺服器
编辑 /etc/httpd/conf/httpd.conf 文件,将 ServerName 字段改为 hostname。
如:
| |
conf.d 与 wsgi-keystone.conf 建立软链接:
| |
启动 Apache 服务:
设置环境变量
ADMIN_PASSWORD字段需要与之前在keystone-manage bootstrap命令中设置的一致。
新建服务,项目,用户与角色
新建一个 service 服务项目来为独立用户提供单独的服务:
| |
新建一个 demo 项目给为授权的用户以及项目使用:
| |
新建 demo 用户并设置密码 DEMO_PASSWORD:
| |
新建 user 角色:
| |
添加 user 角色到 demo 项目中的 demo 用户:
| |
增强安全性
编辑 /etc/keystone/keystone-parte.ini 文件,将 admin_token_auth 从 [pipeline:public_api], [pipeline:admin_api] 和 [pipeline:api_v3] 中移除。
取消临时 OS_AUTH_URL 和 OS_PASSWORD 环境变量。
| |
为 admin 用户请求验证口令:
| |
为 demo 用户请求验证口令:
| |
编写客户端环境脚本
由于 export 方法建立环境变量易消失,在客户机上我们需要更简便的方式导入环境变量,即 openrc 文件。
对于 admin 用户,编写 admin-openrc :
ADMIN_PASSWORD字段需要与之前在keystone-manage bootstrap命令中设置的一致。
对于 demo 用户,编写 demo-openrc :
DEMO_PASSWORD字段需要与之前在openstack user create --domain default --password-prompt demo命令中设置的一致。
使用脚本
使用刚才编写好的 openrc 脚本来建立临时环境变量(以 admin 为例,demo 同理),在 openrc 文件同级目录执行:
| |
获取用户口令:
| |
总结
也是基本跟着官方教程走就好,但需要注意一些历史遗留的问题。

本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。