4.1 Keystone认证服务(OpenStack No.4)

Keystone模块是OpenStack中的必要组件,在安装OpenStack时,需要通过Keystone注册Glance服务、Cinder服务和Nova服务。以确保服务器或OpenStack平台框架的正常运行。为了使Keystone正常工作,需要适当配置数据库和配置文件路径。

完成Keystone的基本配置文件后,需对Keystone数据库进行配置。之后还要注册一系列角色,只有通过注册的角色才能分配权限并调用OpenStack的相关服务。

4.1.1 创建keystone数据库

登录数据库,创建名为keystone的数据库,如图4.1所示。

[root@controller~]#mysql -uroot -p123456
MariaDB[(none)] >create database keystone;  #添加keystone数据库

#创建keystone用户授权本地登录设置密码
MariaDB[(none)]> grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';

#提供keystone用户授权远程登录并设置密码
MariaDB[(none)]> grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';

[root@controller~]#mysql -uroot -p123456
MariaDB[(none)] >create database keystone;  #添加keystone数据库

#创建keystone用户授权本地登录设置密码
MariaDB[(none)]> grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';

#提供keystone用户授权远程登录并设置密码
MariaDB[(none)]> grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';

图4.1 添加数据库.png

图4.1 添加数据库

4.1.2 生成随机密码

生成随机密码用于管理员密码,这个密码需要特别记住,后续需要使用如图4.2所示:

图4.2 随机密码.png

图4.2 随机密码
[root@controller ~]# openssl rand -hex 10 
42f90abebe9ccdf2f659

#生成随机密码用于管理员密码,这个密码需要特别记住,后续需要使用
[root@controller ~]# openssl rand -hex 10 
42f90abebe9ccdf2f659

4.1.3 安装openstack-keystone,httpd,mod_wsgi服务

[root@controller ~]# yum -y install openstack-keystone httpd mod_wsgi
[root@controller ~]# vi /etc/keystone/keystone.conf 
#编辑keystone配置文件

#[DEFAULT] 下面添加
admin_token=42f90abebe9ccdf2f659

#[database]下面添加
connection=mysql+pymysql://keystone:123456@controller/keystone

#[token]下面添加
provider=fernet

[root@controller ~]# yum -y install openstack-keystone httpd mod_wsgi
[root@controller ~]# vi /etc/keystone/keystone.conf 
#编辑keystone配置文件

#[DEFAULT] 下面添加
admin_token=42f90abebe9ccdf2f659

#[database]下面添加
connection=mysql+pymysql://keystone:123456@controller/keystone

#[token]下面添加
provider=fernet

4.1.4 初始化keystone身份认证数据库链接

[root@controller~]#su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@controller~]#mysql -uroot -p123456 -e 'show tables from keystone;'
#检查验证数据表如图4.3所示。

[root@controller~]#su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@controller~]#mysql -uroot -p123456 -e 'show tables from keystone;'
#检查验证数据表如图4.3所示。

图4.3 数据表初始验证.png

图4.3 数据表初始验证.png

4.1.5 初始化fernet keys

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

4.1.6 配置http服务

[root@controller~]#vi /etc/httpd/conf/httpd.conf  #如图4.4所示

#复制文件
[root@controller~]#cp -p /opt/mitaka/wsgi-keystone.conf /etc/httpd/conf.d/
[root@controller ~]# systemctl start httpd
[root@controller ~]# systemctl enable httpd

[root@controller~]#vi /etc/httpd/conf/httpd.conf  #如图4.4所示

#复制文件
[root@controller~]#cp -p /opt/mitaka/wsgi-keystone.conf /etc/httpd/conf.d/
[root@controller ~]# systemctl start httpd
[root@controller ~]# systemctl enable httpd

图4.4 配置httpd.png

图4.4 配置httpd.conf

4.1.7 创建Keystone服务实体

4.1.7.1 配置认证令牌

export OS_TOKEN=42f90abebe9ccdf2f659   #这是之前随机生成的密码
export OS_URL=http://controller:35357/v3   #控制节点的端口及版本
export OS_IDENTITY_API_VERSION=3  #身份鉴权api的版本

export OS_TOKEN=42f90abebe9ccdf2f659   #这是之前随机生成的密码
export OS_URL=http://controller:35357/v3   #控制节点的端口及版本
export OS_IDENTITY_API_VERSION=3  #身份鉴权api的版本

4.1.7.2 创建实体和认证服务API端点

[root@controller ~]# openstack service create --name keystone --description "OpenStack Identity" identity
#如图4.5所示

[root@controller ~]# openstack service create --name keystone --description "OpenStack Identity" identity
#如图4.5所示

图4.5 创建端点.png
图4.5 创建端点

添加端点,以public展示如图4.6所示。

[root@controller ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3
[root@controller ~]# openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
[root@controller ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

[root@controller ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3
[root@controller ~]# openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
[root@controller ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

图4.6 创建public.png

图4.6 创建public api端点

4.1.7.3 创建项目,域,用户以及角色

创建这个项目的域,命令中的Taoism只是这个域的名称描述,如图4.7所示。

[root@controller~]#openstack domain create --description "Taoism" taoism 
[root@controller~]#openstack domain create --description "Taoism" taoism 

图4.7 创建域.png

图4.7 创建域

在Taoism域下创建一个admin项目,如图4.8所示。

[root@controller ~]# openstack project create --domain taoism --description "Admin project" admin
[root@controller ~]# openstack project create --domain taoism --description "Admin project" admin

图4.8 创建管理员项目.png
图4.8 创建管理员项目

创建管理员用户和密码,命令中的密码根据自己需求更改,如图4.9所示。

[root@controller ~]# openstack user create --domain taoism --password 123456 admin
[root@controller ~]# openstack user create --domain taoism --password 123456 admin

图4.19 创建admin用户.png
图4.9 创建admin用户

创建管理员角色并添加角色到项目上,如图4.10所示。

[root@controller ~]# openstack role create admin
[root@controller ~]# openstack role add --project admin --user admin admin

[root@controller ~]# openstack role create admin
[root@controller ~]# openstack role add --project admin --user admin admin

图4.20 创建角色.png
图4.10 创建角色

后续创建以下两个项目的相关用户角色,操作与以上步骤相似不做展示。

#创建service项目
[root@controller ~]# openstack project create --domain taoism --description "Service Project" service

#创建demo项目
[root@controller ~]# openstack project create --domain taoism --description "Demo Project" demo

#创建demo用户:
[root@controller ~]# openstack user create --domain taoism --password 123456 demo

#创建demouser角色
[root@controller ~]# openstack role create demouser

#把demouser添加到项目和用户
[root@controller ~]# openstack role add --project demo --user demo demouser

#创建service项目
[root@controller ~]# openstack project create --domain taoism --description "Service Project" service

#创建demo项目
[root@controller ~]# openstack project create --domain taoism --description "Demo Project" demo

#创建demo用户:
[root@controller ~]# openstack user create --domain taoism --password 123456 demo

#创建demouser角色
[root@controller ~]# openstack role create demouser

#把demouser添加到项目和用户
[root@controller ~]# openstack role add --project demo --user demo demouser

4.1.8 验证认证令牌

[root@controller ~]# unset OS_TOKEN OS_URL  #移除设置的token和url
[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name Taoism --os-user-domain-name taoism --os-project-name admin --os-username admin token issue

[root@controller ~]# unset OS_TOKEN OS_URL  #移除设置的token和url
[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name Taoism --os-user-domain-name taoism --os-project-name admin --os-username admin token issue

验证结果如图4.11所示。

图4.11 验证认证令牌.png
图4.11 验证认证令牌

4.1.9 创建OpenStack客户端环境脚本并验证

创建admin环境脚本

[root@controller ~]# vi /root/admin-openrc      
export OS_PROJECT_DOMAIN_NAME=taoism
export OS_USER_DOMAIN_NAME=taoism
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
#创建admin环境脚本
[root@controller ~]# vi /root/admin-openrc      
export OS_PROJECT_DOMAIN_NAME=taoism
export OS_USER_DOMAIN_NAME=taoism
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

创建demo脚本

[root@controller ~]# vi /root/demo-openrc 
export OS_PROJECT_DOMAIN_NAME= taoism
export OS_USER_DOMAIN_NAME= taoism
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
#创建demo脚本
[root@controller ~]# vi /root/demo-openrc 
export OS_PROJECT_DOMAIN_NAME= taoism
export OS_USER_DOMAIN_NAME= taoism
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

创建脚本结束后运行脚本使用openstack token issue命令查询验证结果,如图4.12所示。

图4.12 环境脚本验证.png
图4.12 环境脚本验证

OpenStack搭建教程第四节今天到这里,可以看看前面三节。

一、云计算和OpenStack
二、OpenStack云平台架构设计
三、安装部署OpenStack所需基础软件包

精品推荐

ambari大数据管理平台搭建教程