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';
查看数据库
安装openstack客户端软件以及keystone的相关软件
yum install python-openstackclient openstack-keystone httpd mod_wsgi -y
如果报错的话,说明你没有配置openstack的源
我们需要配置openstack的源(仅供参考)
配置源成功后,
[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
同步数据库
[root@wang02 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
注意: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
[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
创建一个demo的项目
[root@wang02 ~]# openstack project create --domain default \
> --description "Demo Project" demo
创建一个demo用户
[root@wang02 ~]# openstack user create --domain default --password DEMO_PASS demo
创建一个demo的角色
[root@wang02 ~]# openstack role create user
将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
到此为止,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
验证一下脚本:
[root@wang02 ~]# . admin-openrc
[root@wang02 ~]# openstack token issue
到这里我们的keystone算是搭建完成。如果搭建过程中遇到问题或有不对的地方,大家可提出来,我们共同进步。