参考链接
官网:
Minimal deployment for UssuriOpenStack Ussuri Installation GuidesKeystone Installation TutorialKeystone Installation Tutorial for Red Hat Enterprise Linux and CentOS 



文章目录

  • 一、创建keystone数据库并授权
  • 1.登录进入数据库
  • 2.创建keystone数据库并授权
  • 二、keystone相关软件安装与配置
  • 1.安装keystone相关软件
  • 2.修改keystone配置
  • 3.初始化同步keystone数据库
  • 4.同步完成进行连接测试
  • 5.初始化Fernet令牌库
  • 6.配置启动Apache(httpd)
  • 7.初始化引导keystone认证服务
  • 8.创建keystone的一般实例
  • 三、验证操作keystone是否安装成功
  • 四、创建OpenStack客户端环境变量脚本
  • 五、keystone安装完毕



一、创建keystone数据库并授权

1.登录进入数据库

使用mysql数据库的root账户登录,密码为控制节点环境准备时初始化mysql数据设置的密码为root。

mysql -u root -proot

2.创建keystone数据库并授权

创建keystone数据库,授予对keystone数据库的访问权限,刷新退出数据库.

CREATE DATABASE keystone;

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

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

flush privileges;
show databases;
select user,host from mysql.user;
exit

二、keystone相关软件安装与配置

1.安装keystone相关软件

如果要使用https访问,需要安装mod_ssl

yum clean packages
yum install -y openstack-keystone httpd python3-mod_wsgi

对于RHEL8 / Centos8及更高版本,请安装软件包python3-mod_wsgi。
Keystone安装教程

2.修改keystone配置

文件路径为:/etc/keystone/keystone.conf

备份配置文件

cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak
egrep -v "^$|^#" /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf

配置Keystone配置文件,在对应项底下增加以下字段

vim /etc/keystone/keystone.conf

In the [database] section, configure database access:

Replace KEYSTONE_DBPASS with the password you chose for the database.

[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

In the [token] section, configure the Fernet token provider:

[token]
# ...
provider = fernet

检查配置结果

grep '^[a-z]' /etc/keystone/keystone.conf

keystone不需要启动,通过http服务进行调用

3.初始化同步keystone数据库

同步keystone数据库

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

4.同步完成进行连接测试

mysql  -ukeystone -pkeystone -e "use keystone;show tables;"
mysql -h192.168.139.101 -ukeystone -pkeystone -e "use keystone;show tables;"|wc -l

5.初始化Fernet令牌库

Initialize Fernet key repositories,关于Fernet令牌的介绍Keystone Fernet tokens

# 以下命令无返回信息,无报错即为成功
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

6.配置启动Apache(httpd)

(1)修改httpd主配置文件

sed -i "s/#ServerName www.example.com:80/ServerName controller/" /etc/httpd/conf/httpd.conf

或者

vim /etc/httpd/conf/httpd.conf +95
#ServerName 设置为controller
#-------------------------------------
ServerName controller
#-------------------------------------

(2)配置虚拟主机,建立软链接

# 创建keystone虚拟主机配置文件的快捷方式,也可以复制过来

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

(3)启动httpd并配置开机自启动

如果http起不来,需要关闭 selinux 或者安装 yum install openstack-selinux

systemctl restart httpd.service
systemctl status httpd.service
netstat -anptl|grep httpd

systemctl enable httpd.service
systemctl list-unit-files |grep httpd.service

至此,http服务配置完成。

7.初始化引导keystone认证服务

(1)创建 keystone 用户,初始化的服务实体和API端点
创建用户:需要创建一个密码ADMIN_PASS,作为登陆openstack的admin管理员用户,这里密码也创建为admin。
创建keystone服务实体和身份认证服务,以下三种类型分别为公共的、内部的、管理的。

  • 在endpoint表增加3个服务实体的API端点
  • 在local_user表中创建admin用户
  • 在project表中创建admin和Default项目(默认域)
  • 在role表创建3种角色,admin,member和reader,即公共的、内部的、管理的。
  • 在service表中创建identity服务
keystone-manage bootstrap --bootstrap-password admin \
  --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

#source admin-openrc.sh
#openstack catalog list

(2)临时配置管理员账户的相关变量进行管理

这里的export OS_PASSWORD要使用上面配置的ADMIN_PASS

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
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
[root@controller ~]# openstack catalog list
Failed to discover available identity versions when contacting http://controller:5000/v3. Attempting to parse version from URL.
Unexpected exception for http://controller:5000/v3/auth/tokens: Failed to parse: http://controller:5000/v3/auth/tokens
[root@controller ~]#

报错处理:

vi /etc/keystone/keystone.conf
处理方法:
#openssl rand -hex 10                 //随机获取一个值
37ba07810695ad7d83bb
#vi /etc/keystone/keystone.conf

[admin_token]
admin_token=37ba07810695ad7d83bb
export OS_TOKEN=37ba07810695ad7d83bb

取消环境变量配置

#vim unsetadminrc.sh
unset OS_USERNAME
unset OS_PASSWORD
unset OS_PROJECT_NAME
unset OS_USER_DOMAIN_NAME
unset OS_PROJECT_DOMAIN_NAME
unset OS_AUTH_URL
unset OS_IDENTITY_API_VERSION

附:常用的openstack管理命令,需要应用管理员的环境变量

# 查看keystone实例相关信息
openstack endpoint list
openstack project list
openstack user list

# 删除endpoint
openstack endpoint delete [ID]

8.创建keystone的一般实例

(1)【非必须】 创建一个名为example的域
在project表中创建名为example的项目。
非必要步骤是因为在上面的步骤中已经创建默认的例子,Although the “default” domain already exists from the keystone-manage bootstrap step in this guide, a formal way to create a new domain would be:

(2)【必须】 创建名为service的项目,在default域中。
用于常规(非管理)任务,需要使用无特权用户。以下命令会在project表中创建名为service的项目

openstack project create --domain default --description "Service Project" service
[root@controller ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 4e436ca48dc64ad0950829c386d20d19 |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~]#

(3)【非必须】 创建名为myproject项目,在default域中。

作为一般用户(非管理员)的项目,为普通用户提供服务。以下命令会在project表中创建名为myproject项目

(4)【非必须】 创建myuser用户,在default域中。
以下命令会在local_user表增加myuser用户。使用–password选项为直接配置明文密码,使用–password-prompt选项为交互式输入密码
直接创建用户和密码
(5)【非必须】 创建myrole角色,在role表中。

openstack role create myrole

【必须】 但是需要创建一个默认角色user或者_member_

openstack role create user

原因:/etc/openstack-dashboard/local_settings文件配置中填写的是user

vim /etc/openstack-dashboard/local_settings
--------------
#OPENSTACK_HOST = "127.0.0.1"
OPENSTACK_HOST = "controller"

#unchanged
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

#add new
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
--------------

(6)【未操作】将myrole角色添加到myproject项目中和myuser用户
以下命令无返回,数据表操作不太明显

(7)查看keystone实例相关信息

openstack role list
openstack endpoint list
openstack project list
openstack user list

三、验证操作keystone是否安装成功

1.去除环境变量
关闭临时认证令牌机制,获取 token,验证keystone配置成功

unset OS_AUTH_URL OS_PASSWORD
env |grep OS_
##

2.作为管理员用户去请求一个认证的token
测试是否可以使用admin账户进行登陆认证,请求认证令牌

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
输入密码:admin

3.【未操作】使用普通用户获取认证token

四、创建OpenStack客户端环境变量脚本

Create OpenStack client environment scripts,上面使用环境变量和命令选项的组合通过“openstack”客户端与身份认证服务交互。
为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件,我这里使用自定义的文件名

1.创建admin用户的环境管理脚本

cat > /root/admin-openrc <<EOF 
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://$ENDPOINT_API:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF

3.测试环境管理脚本
可以看到user_id和上面用命令获取到的是一样的,说明配置成功

五、keystone安装完毕

至此,控制节点的keystone认证服务组件完成安装与配置,使用VMware虚拟机的话,现在可以关机做快照。