ITPub博客

首页 > 数据库 > 数据库开发技术 > OpenStack离线Train版安装(四)

OpenStack离线Train版安装(四)

原创 数据库开发技术 作者:shuchaoyang 时间:2022-10-07 22:29:16 0 删除 编辑

4 控制节点-keystone认证服务组件

官方参考:openstack-services,keystone-install

4.1 创建keystone数据库并授权

4.1.1 登录进入数据库

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

mysql -u root -proot

4.1.2 创建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

4.2 keystone相关软件安装与配置

4.2.1 安装keystone相关软件

配置Apache服务,使用带有“mod_wsgi”的HTTP服务器来相应认证服务请求,端口为5000和35357, 默认情况下,Kestone服务仍然监听这些端口

yum install openstack-keystone httpd mod_wsgi -y

#用于快速配置

yum install openstack-utils -y

4.2.2 快速修改keystone配置

下面使用的快速配置方法需要安装openstack-utils才可以实现

openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:keystone@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet

注意:keystone不需要连接rabbitmq

查看生效的配置

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

其他方式查看生效配置

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

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

4.2.3 初始化同步keystone数据库

同步keystone数据库

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

4.2.4 同步完成进行连接测试

mysql -ukeystone -pkeystone -e "use keystone;show tables;"
mysql -h10.224.24.161 -ukeystone -pkeystone -e "use keystone;show tables;"|wc -l

4.2.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

4.2.6  初始化引导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

思考:

①此处的controller是否可以考虑换为管理网的IP地址,以便其他主机方便调用API,或者在其他主机配置主机文件controller为相应的IP地址。

②在之前的版本(queens之前),引导服务需要2个端口提供服务(用户5000和管理35357),本版本通过同一个端口提供服务

③关于访问地址endpoint表:keystone介绍,keystone介绍与安装endpoint是一个网络上可访问的地址,通常是一个 URL。service 通过endpoint 暴露自己的 API。keystone负责管理和维护每个service的endpoint。可以使用下面的命令来查看endpoint。

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

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

export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

查看声明的变量

env |grep OS_

(3)查看catalog信息

openstack catalog list
[root@controller ~]# openstack catalog list 
+----------+----------+----------------------------------------+
| Name     | Type     | Endpoints                             |
+----------+----------+----------------------------------------+
| keystone | identity | RegionOne                             |
|         |         |   internal: http://controller:5000/v3/ |
|         |         | RegionOne                             |
|         |         |   admin: http://controller:5000/v3/   |
|         |         | RegionOne                             |
|         |         |   public: http://controller:5000/v3/   |
|         |         |                                       |
+----------+----------+----------------------------------------+
[root@controller ~]#

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

查看keystone实例相关信息

openstack endpoint list
openstack project list
openstack user list

删除endpoint

openstack endpoint delete [ID]

4.2.7 配置启动Apache(httpd)

(1)修改httpd主配置文件

sed -i "s/#ServerName  controller/" /etc/httpd/conf/httpd.conf

或者

vim /etc/httpd/conf/httpd.conf

95行更改成如下:

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 start httpd.service
systemctl status httpd.service
netstat -anptl|grep httpd

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

至此,http服务配置完成

4.2.8 创建域、项目、用户、角色

(1)【非必须】 创建一个名为example的域在project表中创建名为example的项目

openstack domain create --description "An Example Domain" example

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

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

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

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

openstack project create --domain default \
--description "Demo Project" myproject

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

openstack user create --domain default --password=myuser myuser

或者交互式输入密码

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

(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"

具体影响,OpenStack离线Train版安装系列—13 控制节点-Horizon服务组件

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

openstack role add --project myproject --user myuser myrole

具体问题参考:具体影响,13 控制节点-Horizon服务组件,亦可在上一步(5)的操作中,keystone创建的时候角色名称修改为member

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

openstack endpoint list
openstack project list
openstack user list

4.3 验证操作keystone是否安装成功

4.3.1 去除环境变量

关闭临时认证令牌机制,获取 token,验证keystone配置成功

unset OS_AUTH_URL OS_PASSWORD
env |grep OS_

4.3.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

4.3.3 使用普通用户获取认证token

以下命令使用”myuser“用户的密码和API端口5000,只允许对身份认证服务API的常规(非管理)访问。

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

输入密码:myuser

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

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

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

cd
touch admin-openrc.sh
vim admin-openrc.sh

文件内容

export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

4.4.2 创建普通用户myuser的客户端环境变量脚本

cd
touch myuser-openrc.sh
vim myuser-openrc.sh

文件内容

export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_PROJECT_NAME=myproject
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

4.4.3 测试环境管理脚本

source admin-openrc.sh
openstack token issue

source myuser-openrc.sh
openstack token issue

可以看到user_id和上面用命令获取到的是一样的,说明配置成功

4.5 keystone安装完毕

至此,控制节点的keystone认证服务组件完成安装与配置。


欢迎关注我的微信公众号【超哥的IT私房菜】获取更多技术干货!

有什么吐槽或反馈意见,直接告诉我!

我会解决您说的问题,进一步更好的服务您哦!

温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469。



原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303478