参考链接
官网:
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虚拟机的话,现在可以关机做快照。