一、以下命令安装了Keystone组件的必要软件包。
[root@controller ~]# yum -y install openstack-keystone httpd mod_wsgi
二、MariaDB数据库配置
[root@controller ~]# mysql -uroot -p000000
查看当前已有数据库: show databases;
第2步,新建“keystone”数据库。
MariaDB [(none)]> CREATE DATABASE keystone;
第3步,给用户授权使用新建数据库。
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘localhost’ IDENTIFIED BY ‘000000’;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘%’ IDENTIFIED BY ‘000000’;
三、配置Keystone
(1)打开配置文件
[root@controller ~]# vi /etc/keystone/keystone.conf
(2)编辑配置文件
第1步,修改“[database]”部分实现与数据库连接。
connection = mysql+pymysql://keystone:000000@controller/keystone
以上代码配置数据库连接信息,用“keystone”用户和密码“000000”去连接“controller”主机中的名为“keystone”的数据库。
PS: 输入 / 或?加 关键字 进行查看,然后按 n(上一个) 或 N(shift + n下一个)进行切换,如: /[database] 或 ?[database]
第2步,修改“[token]”部分配置令牌的加密方式。
provider = fernet
“Fernet Token”是一种令牌加密格式。一个“Fernet Token”是一个很长的字符串,在这个字符串中存储了被加密的用户信息、权限信息、过期时间信息等。
Keystone安装文件提供了数据库的基础表数据,此时还没有将数据导入“keystone”数据库中,需要手动将数据同步导入数据库中。
[root@controller ~]# su keystone -s /bin/sh -c “keystone-manage db_sync”
“su keystone”:su命令用于用户切换。这里切换到“keystone”用户,该用户已经拥有对“keystone”数据库的管理权限。
“-s /bin/sh”:-s为su命令的选项,指定用什么编译器(Shell)来执行命令,“/bin/sh”就是指定的编译器。
“-c”:su命令的选项,在其后引号内的是具体执行的命令。“keystone-manage db_sync”
实现了数据同步到数据库。
先验证原来的 keystone 数据库
同步后
以下命令将自动创建“/etc/keystone/fernet-keys/”目录,并在目录下生成两个Fernet密钥。这两个密钥用于加密和解密令牌。
[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
以下命令将自动创建“/etc/keystone/credential-keys/”目录,并在目录下生成两个Fernet密钥。这两个密钥用于加密解密用户凭证。
[root@controller ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
用“keystone-manage bootstrap”命令给“admin”用户初始化登录凭证,以后登录时出示凭证与此比对就可以进行认证。
[root@controller ~]# keystone-manage bootstrap --bootstrap-password 000000 --bootstrap-admin-url http://controller:5000/v3 --bootstrap-internal-url http://controller:5000/v3 --bootstrap-public-url http://controller:5000/v3 --bootstrap-region-id RegionOne
先验证
四、配置Web服务
(1)给Apache服务器增加WSGI支持
[root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
该命令将“wsgi-keystone.conf”文件软链接到“/etc/httpd/conf.d/”目录。
(2)修改Apache服务器配置并启动Apache服务
由于Keystone本质上是一个Web应用,因此要借助Web服务器运行。Apache服务器的配置文件为“/etc/httpd/conf/httpd.conf”。
[root@controller ~]# vi /etc/httpd/conf/httpd.conf
修改“ServerName”的值为Web服务所在的域名或IP地址。
ServerName controller
(3)重启Apache服务
首先,设置开机重启Apache服务。
[root@controller ~]# systemctl enable httpd
然后,立即启动Apache服务。
[root@controller ~]# systemctl start httpd
报错:
永久解决办法: vim /etc/selinux/config
临时解决办法:setenforce 0
五、模拟登录验证——创建初始化环境变量文件
创建初始化环境变量文件
[root@controller ~]# vi admin-login
export OS_USERNAME=admin
export OS_PASSWORD=000000
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
有了身份凭证文件后,通过如下方法将它导入环境变量中。
[root@controller ~]# source admin-login 或者 . admin-login
然后可以用以下方法查看现有环境变量。
[root@controller ~]# export -p
declare -x OS_AUTH_URL=“http://controller:5000/v3”
declare -x OS_IDENTITY_API_VERSION=“3”
declare -x OS_IMAGE_API_VERSION=“2”
declare -x OS_PASSWORD=“000000”
declare -x OS_PROJECT_DOMAIN_NAME=“Default”
declare -x OS_PROJECT_NAME=“admin”
declare -x OS_USERNAME=“admin”
declare -x OS_USER_DOMAIN_NAME=“Default”
验证