Keustone身份认证组件是openstack项目中默认的身份认证管理系统,所有的服务都需要keystone认证、根据用户的等级分配相应的权限。

    那么我们现在配置最新版本openstack的认证服务keystone

前提准备:Centos7.3、163yum源、openstack-o版源、DNS、时间同步、数据库、rabbitmq、memcache

    创建数据库

create database keystone;

    为数据库用户赋予权限(赋予一个本地用户权限,一个远程登入权限)

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '111';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '111';  

wKioL1lZrQiimEuIAABZLkf7-iw174.png-wh_50  

查看数据库

wKiom1lZrWnC_pmYAAAVzeG1mks899.png-wh_50

安装openstack客户端软件以及keystone的相关软件

yum install python-openstackclient openstack-keystone httpd mod_wsgi -y

如果报错的话,说明你没有配置openstack的源


我们需要配置openstack的源(仅供参考)

wKioL1lZryGBdzLfAAAPkrF3fgg171.png-wh_50

配置源成功后,

[root@wang02 ~]# yum clean all

[root@wang02 ~]# yum makecache

    接下来我们配置keystone,配置文件在/etc/keystone/keystone.conf 

把配置文件做备份:

[[root@wang02 ~]# cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.ds.bak 

配置keystone

[root@wang02 ~]# cat /etc/keystone/keystone.conf.ds.bak | grep -v ^# | uniq > /etc/keystone/keystone.conf

[root@wang02 ~]# sed -i '/^\[database\]$/a\connection = mysql+pymysql://keystone:111@wang01/keystone' /etc/keystone/keystone.conf

[root@wang02 ~]#  sed -i '/^\[token\]$/a\provider = fernet' /etc/keystone/keystone.conf 


wKioL1lZtU6zF80vAAAJ8mostjI789.png-wh_50

wKiom1lZtX-AA813AAAFW2D8UaY592.png-wh_50

同步数据库

[root@wang02 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

wKiom1lZwcuBgvXbAAASMGxKI8Q775.png-wh_50

注意:O版的会有38个表

初始化fernet keys

[root@wang02 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

创建访问该实体的三个api端点

[root@wang02 ~]# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \

> --bootstrap-admin-url http://wang02:35357/v3/ \

> --bootstrap-internal-url http://wang02:5000/v3/ \

> --bootstrap-public-url http://wang02:5000/v3/ \

> --bootstrap-region-id RegionOne

配置apache服务

[root@wang02 ~]# vi /etc/httpd/conf/httpd.conf

wKiom1lbcoWSatygAAAusS9XIjQ937.png-wh_50

[root@wang02 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

创建环境变量

[root@wang02 ~]# export OS_USERNAME=admin

[root@wang02 ~]# export OS_PASSWORD=ADMIN_PASS

[root@wang02 ~]# export OS_PROJECT_NAME=admin

[root@wang02 ~]# export OS_USER_DOMAIN_NAME=Default

[root@wang02 ~]# export OS_PROJECT_DOMAIN_NAME=Default

[root@wang02 ~]# export OS_IDENTITY_API_VERSION=3

[root@wang02 ~]# export OS_AUTH_URL=http://wang02:35357/v3

创建一个域

[root@wang02 ~]# openstack project create --domain default \

>   --description "Service Project" service

wKioL1lbhw3RMD-5AAAk27tbFrQ410.png-wh_50

创建一个demo的项目

[root@wang02 ~]# openstack project create --domain default \

>   --description "Demo Project" demo

wKioL1lbh3qTF1NTAAAp8346Qvw788.png-wh_50

创建一个demo用户

[root@wang02 ~]# openstack user create --domain default   --password DEMO_PASS demo

wKioL1lbh_HRPk61AAAeW00wglA256.png-wh_50

创建一个demo的角色

[root@wang02 ~]# openstack role create user

wKiom1lbiESBC3g4AAAWA0Kp2vQ555.png-wh_50

将demo角色加入到demo项目中的demo用户中

[root@wang02 ~]# openstack role add --project demo --user demo user


编辑/etc/keystone/keystone-paste.ini

在[pipeline:public_api], [pipeline:admin_api], and [pipeline:api_v3] 三个地方

移走:admin_token_auth 


取消刚才设置的环境变量

unset OS_AUTH_URL OS_PASSWORD

验证操作:

[root@wang02 ~]# openstack --os-auth-url http://wang02:35357/v3 \

> --os-project-domain-name default --os-user-domain-name default \

>   --os-project-name admin --os-username admin token issue

Password: 

密码是 ADMIN_PASS

wKiom1lbiiTi2TAKAABBSAhIZ7w762.png-wh_50

到此为止,keystone搭建成功。

为了每次都得输入环境变量,我们创建一个脚本

[root@wang02 ~]# vi admin-openrc

export OS_PROJECT_DOMAIN_NAME=Default

export OS_USER_DOMAIN_NAME=Default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=ADMIN_PASS

export OS_AUTH_URL=http://wang02:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

wKioL1lbiunAzOK_AAAe3ROuz9c031.png-wh_50


验证一下脚本:

    

[root@wang02 ~]# . admin-openrc

[root@wang02 ~]# openstack token issue

wKioL1lbi3mz8Q5_AAA0FlKW-0Y509.png-wh_50


到这里我们的keystone算是搭建完成。如果搭建过程中遇到问题或有不对的地方,大家可提出来,我们共同进步。