2、认证服务 keystone部署

控制节点:

2.1、安装和配置服务

2.1.1、建库建用户

mysql -u root -p

CREATE DATABASE keystone;

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

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

flush privileges;



2.1.2、安装相关包

yum install openstack-keystone httpd mod_wsgi -y

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第1张图片

如下图所示安装缺失的rpm包,不知道是不是离线源没下载好,附带网站链接:https://pkgs.org/

在网站上直接搜索缺失的rpm包就可以了,确实2个包,但是其中一个包有依赖包,所以最终下载安装3个包:

python-jinja2-2.7.2-4.el7.noarch.rpm

python-markupsafe-0.11-10.el7.x86_64.rpm

python-zope-interface-4.0.5-4.el7.x86_64.rpm

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第2张图片

然后安装成功



2.1.3、生成一个随机值在初始的配置中作为管理员的令牌: 

[root@controller ~]# openssl rand -hex 10

38cffecbd035b2589040

image.png


2.1.4、编辑/etc/keystone/keystone.conf

[DEFAULT]

admin_token = 38cffecbd035b2589040

#这里的作用主要是先手动指定admin_token,为了部署keystone,因为keystone没部署,认证环节还不能工作,等keystone部署好,会把手动指定admin_token认证方式去掉


[database]

connection = mysql+pymysql://keystone:P@ssw0rd@controller/keystone


[token]

provider = fernet


2.1.5、同步修改到数据库  ---可能是虚拟机比较卡,这一步等了两分钟

su -s /bin/sh -c "keystone-manage db_sync" keystone


2.1.6、初始化fernet keys

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone


2.1.7、配置apache服务   ---这里的名称就是主机名

vi /etc/httpd/conf/httpd.conf

ServerName controller


vi /etc/httpd/conf.d/wsgi-keystone.conf

新增配置

Listen 5000

Listen 35357

    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

    WSGIProcessGroup keystone-public

    WSGIScriptAlias / /usr/bin/keystone-wsgi-public

    WSGIApplicationGroup %{GLOBAL}

    WSGIPassAuthorization On

    ErrorLogFormat "%{cu}t %M"

    ErrorLog /var/log/httpd/keystone-error.log

    CustomLog /var/log/httpd/keystone-access.log combined

        Require all granted

   

    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

    WSGIProcessGroup keystone-admin

    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin

    WSGIApplicationGroup %{GLOBAL}

    WSGIPassAuthorization On

    ErrorLogFormat "%{cu}t %M"

    ErrorLog /var/log/httpd/keystone-error.log

    CustomLog /var/log/httpd/keystone-access.log combined

        Require all granted

   

 ---不知道是不是粘贴复制的原因,从这里复制的失败了,从官方文档复制的内容就成功启动了httpd

2.1.8、启动服务:

# systemctl enable httpd

# systemctl start httpd


2.2、创建服务实体和API端点

2.2.1、实现配置管理员环境变量,用于获取后面创建的权限

export OS_TOKEN=38cffecbd035b2589040

#要与前面的/etc/keystone/keystone.conf中的admin_token相同

export OS_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3


2.2.2、基于上一步给的权限,创建认证服务实体(目录服务)

openstack service create --name keystone --description "OpenStack Identity" identity

#如遇到报500错误,ArgsAlreadyParsedError: arguments already parsed: cannot register CLI option,可把--description "OpenStack Identity"去掉

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第3张图片


2.2.3、基于上一步建立的服务实体,创建访问该实体的三个api端点

openstack endpoint create --region RegionOne identity public http://controller:5000/v3

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第4张图片


openstack endpoint create --region RegionOne identity internal http://controller:5000/v3

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第5张图片


openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第6张图片


2.3、创建域,租户,用户,角色

2.3.1、创建域``default``:

openstack domain create --description "Default Domain" default

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第7张图片


2.3.2、为进行管理操作,创建管理的项目、用户和角色

创建 admin 项目:

openstack project create --domain default --description "Admin Project" admin

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第8张图片


创建 admin 用户: --默认密码:P@sswrd

openstack user create --domain default --password-prompt admin

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第9张图片


创建 admin 角色:

openstack role create admin

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第10张图片


添加``admin`` 角色到 admin 项目和用户上:

openstack role add --project admin --user admin admin



2.3.3、本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建``service``项目:

为后续的服务创建统一租户service

解释:后面每搭建一个新的服务都需要在keystone中执行四种操作:1.建租户 2.建用户 3.建角色 4.做关联

后面所有的服务公用一个租户service,都是管理员角色admin,所以实际上后续的服务安装关于keysotne的操作只剩2,4

openstack project create --domain default --description "Service Project" service

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第11张图片


2.3.4、常规(非管理)任务应该使用无特权的项目和用户,创建 demo 项目和用户

普通用户:demo

openstack project create --domain default --description "Demo Project" demo

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第12张图片


openstack user create --domain default --password-prompt demo

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第13张图片

默认密码:P@ssw0rd


openstack role create user

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第14张图片


openstack role add --project demo --user demo user



2.4、验证操作:

2.4.1、因为安全性的原因,关闭临时认证令牌机制:

编辑 /etc/keystone/keystone-paste.ini 文件,从``[pipeline:public_api]``,[pipeline:admin_api]``和``[pipeline:api_v3]``部分删除``admin_token_auth 。

下图三个红色方框内的admin_token_auth全部删除

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第15张图片


下图为删除后的配置

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第16张图片


2.4.2、重置``OS_TOKEN``和``OS_URL`` 环境变量:

# unset OS_TOKEN OS_URL



2.4.3、作为 admin 用户,请求认证令牌:

# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第17张图片

注解:这个命令使用``admin``用户的密码。我这里全程都是:P@ssw0rd


2.4.4、作为``demo`` 用户,请求认证令牌:

# openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue

密码全程都是:P@ssw0rd

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第18张图片

注解:这个命令使用``demo`` 用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。


2.5、创建 OpenStack 客户端环境脚本

2.5.1、编辑文件 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=P@ssw0rd

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

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2


2.5.2、编辑文件 demo-openrc 并添加如下内容:

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=demo

export OS_USERNAME=demo

export OS_PASSWORD=P@ssw0rd

export OS_AUTH_URL=http://controller:5000/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2


2.5.3、使用脚本

使用特定租户和用户运行客户端,你可以在运行之前简单地加载相关客户端脚本。例如:

加载``admin-openrc``文件来身份认证服务的环境变量位置和``admin``项目和用户证书:

# . admin-openrc

请求认证令牌:

# openstack token issue

Openstack Mitaka安装手顺(2)认证服务 keystone部署_第19张图片