四、OpenStack Keystone认证服务
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 添加数据库
4.1.2 生成随机密码
生成随机密码用于管理员密码,这个密码需要特别记住,后续需要使用如图4.2所示:

图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.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.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 创建端点
添加端点,以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 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 创建域
在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 创建管理员项目
创建管理员用户和密码,命令中的密码根据自己需求更改,如图4.9所示。
[root@controller ~]# openstack user create --domain taoism --password 123456 admin
[root@controller ~]# openstack user create --domain taoism --password 123456 admin

图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.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 验证认证令牌
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 环境脚本验证
OpenStack搭建教程第四节今天到这里,可以看看前面三节。
一、云计算和OpenStack
二、OpenStack云平台架构设计
三、安装部署OpenStack所需基础软件包
精品推荐
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 牧之小岛-Allende
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果