---
title: 安装配置并验证Keystone
description: "Keystone为OpenStack项目中的其他服务组件提供了身份认证和授权功能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackqueens_04_006.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/OpenStack/kunpengopenstackqueens_04_006.html
indexId: 46c97f0fa7d83de84bb39e03218fe26292440da8459b0628966dd8681d42c94c83
---
# 安装配置并验证Keystone

Keystone为OpenStack项目中的其他服务组件提供了身份认证和授权功能。

在控制节点安装配置并验证Keystone。


#### 创建Keystone数据库

1. 进入数据库。
  1 mysql -u root -p

2. 创建Keystone数据库。
  1 CREATE DATABASE keystone;

3. 授权，允许本地及远程服务器访问mysql，<PASSWORD>为数据库用户root的密码。
  1 2 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '<PASSWORD>';

  注意将<PASSWORD>修改为需要的密码。（OpenStack的账户密码设置中，不支持特殊符号#；OpenStack对密码的复杂度没有要求，可以设置为不带特殊字符的密码；若在设置密码时，一定要包含特殊符号，OpenStack仅支持如下特殊字符：& = $ - _ . + ! * ( ) ）。

4. 退出数据库。
  1 exit


#### 安装Keystone

1. 安装Keystone包。
  1 2 yum config-manager update --set-enabled yum -y install openstack-keystone httpd python2-mod_wsgi

2. 编辑“/etc/keystone/keystone.conf”文件。
  在[database]部分添加如下内容：

  1 connection = mysql+pymysql://keystone:<PASSWORD>@controller/keystone

  在[token]部分添加如下内容：

  1 provider = fernet

  <PASSWORD>为用户为数据库设置的密码。

3. 填充Identity服务数据库。
  1 su -s /bin/sh -c "keystone-manage db_sync" keystone

4. 初始化Fernet 密钥 存储库。
  1 2 keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

5. 引导身份服务。
  1 2 3 4 5 keystone-manage bootstrap --bootstrap-password <PASSWORD> \ --bootstrap-admin-url http://controller:5000/v3/ \ --bootstrap-internal-url http://controller:5000/v3/ \ --bootstrap-public-url http://controller:5000/v3/ \ --bootstrap-region-id RegionOne

  注意修改<PASSWORD>为用户admin的密码。


#### 配置Apache HTTP服务

1. 编辑“/etc/httpd/conf/httpd.conf”文件，配置“ServerName”选项为控制节点。
  系统默认注释掉此项，需要找到该项并且修改。

2. 创建“/usr/share/keystone/wsgi-keystone.conf”文件的链接。
  1 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

3. 启动Apache HTTP服务并配置其随系统启动。
  1 2 systemctl enable httpd.service systemctl start httpd.service

4. 创建OpenStack客户端环境脚本。

```
cat << EOF >> /etc/keystone/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_PASSWORD
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
```


  将ADMIN_PASSWORD替换为admin用户密码。


#### 创建域、项目、用户和角色

1. 导入环境变量。

```
source /etc/keystone/admin-openrc
```


2. 创建新域。
  1 openstack domain create --description "An Example Domain" example

  该步骤介绍域的创建方式，默认的域已经在安装Keystone的5中创建。

3. 创建Service项目。
  1 openstack project create --domain default --description "Service Project" service

4. 创建普通项目myproject（常规任务使用）。
  1 openstack project create --domain default --description "Demo Project" myproject

5. 创建普通用户myuser（普通用户使用）。
  1 openstack user create --domain default --password-prompt myuser

  并创建密码。

6. 创建角色。
  1 openstack role create myrole

7. 将myrole角色添加到myproject项目和myuser用户。
  1 openstack role add --project myproject --user myuser myrole


#### 验证Keystone

1. 取消环境变量。
  1 unset OS_AUTH_URL OS_PASSWORD

2. 作为admin用户，请求身份验证令牌。
  1 2 3 openstack --os-auth-url http://controller:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name admin --os-username admin token issue

  输入密码：<PASSWORD>

  密码为自定义，为方便阅读，本文中全部以<PASSWORD>代替，此处的<PASSWORD>为admin用户的密码。

3. 作为myuser上一节中创建的用户，请求身份验证令牌。
  1 2 3 openstack --os-auth-url http://controller:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name myproject --os-username myuser token issue

  输入密码：<PASSWORD>

4. 使用脚本。
  1 2 source /etc/keystone/admin-openrc openstack token issue
