keystone安装小记-先电脚本解读

2024-02-23 20:58

本文主要是介绍keystone安装小记-先电脚本解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:https://www.cpweb.top/352

keystone安装小记

注:基于centos7.2,也就是1511版本。小记内容为解读先电iaas-install-keystone.sh脚本,没用先电环境可自行更改变量。

一、安装keystone组件服务包

 yum install -y openstack-keystone httpd mod_wsgi 

安装Openstack的keystone模块;httpd是Apache的web服务;mod_wsgi是一个简单的Apache模块,支持任何Python WSGI的接口的Python应用程序的托管。

二、数据库配置

1.创建Keystone数据库
 mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS keystone ;"

如果不存在这个数据库则创建

 mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '$KEYSTONE_DBPASS' ;"mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '$KEYSTONE_DBPASS' ;"
 大概意思是创建用户的同时给它赋予keystone数据库的所有权限。注意localhost和%,localhost指本机可以连接,%指任何客户机都可以连接。%其实是个通配符,在这里是匹配任何主机名。可以进入mysql数据库中查看(select Host,User,Password from user where User="keystone";) 一些基本操作:           查看用户权限: show grants for xx@localhost;show grants for xx@%;查看警告:show warnings;
2.配置数据库连接
 crudini --set /etc/keystone/keystone.conf database connection  mysql+pymysql://keystone:$KEYSTONE_DBPASS@$HOST_NAME/keystone

没接触这个的命令的朋友,可能看着完全摸不着头脑,其实就是在keystone的配置文件中添加配置。
结果配置为:

[database]
connection=mysql+pymysql://keystone:000000@controller/keystone注: 用户名:密码@mysql所在主机/数据库pymysql是一个python库,用于数据库的连接
3、为ketstone服务创建数据库表
 su -s /bin/sh -c "keystone-manage db_sync" keystone

以keystone用户的身份执行指令 keystone-manage db_sync , 同步Keystone的配置到数据库。

三、创建令牌、签名密钥和证书

1.创建令牌
 ADMIN_TOKEN=$(openssl rand -hex 10)

openssl rand 用于产生指定长度bytes的随机字符,这里是将生成的10位随机数赋值给ADMIN_TOKEN变量。

 crudini --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKENcrudini --set /etc/keystone/keystone.conf token provider  fernet

在keystone.conf配置文件中添加配置
结果配置为:

[DEFAULT]
admin_token = d5dac033a329560b9ffb
[token]
provider = fernet
2.初始化Fernet keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

创建Fernet密钥存储库,用于token加密。

注:keystone-manage命令行接口是keystone的管理工具,用于keystone服务的初始化与数据更新。通常,这个命令用于不能通过HTTP API完成的功能操作,例如数据的导入/导出以及数据库的迁移等。

四、配置httpd服务

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

将/etc/httpd/conf/httpd.conf配置文件中的ServerName www.example.com:80 替换为ServerName controller。

cat > /etc/httpd/conf.d/wsgi-keystone.conf <<- EOF
Listen 5000
Listen 35357<VirtualHost *:5000>WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}WSGIProcessGroup keystone-publicWSGIScriptAlias / /usr/bin/keystone-wsgi-publicWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /var/log/httpd/keystone-access.log combined<Directory /usr/bin>Require all granted</Directory>
</VirtualHost><VirtualHost *:35357>WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}WSGIProcessGroup keystone-adminWSGIScriptAlias / /usr/bin/keystone-wsgi-adminWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /var/log/httpd/keystone-access.log combined<Directory /usr/bin>Require all granted</Directory>
</VirtualHost>EOF
systemctl enable httpd.service
systemctl start httpd.service

这里运用了输出重定向和输入重定向,<<- EOF是从标椎输入中读入,直到遇到分界符EOF才停止。

至于为什么要配置httpd服务,因为Keystone对外提供REST API接口(组件之间通信基于Restful api),通常使用HTTP协议访问。

这里监听了35357和5000端口,35357和5000其实基本没啥区别在v3版本里,通俗说35357-管理员,5000-普通用户(公共)。

五、定义用户、租户和角色

1.设置环境变量
export OS_TOKEN=$ADMIN_TOKEN
export OS_URL=http://$HOST_NAME:35357/v3
export OS_IDENTITY_API_VERSION=3第一步的值等于keystone.conf中admin_token的值。并且只要在当前终端执行命令,当前终端就是管理员用户。因为现在keystone没有提供Endpoint,所以自己手动指定一个Endpoint,以后的请求就往这个url提交。v3代表用的keystone版本为3。认证版本为3。
2.创建服务实体和 API 端点
openstack service create --name keystone --description "OpenStack Identity" identity创建服务注:keystone身份认证服务组件为Opnstack项目中其他服务组件的使用和操作提供了服务目录,任何一个Openstack项目中的服务组件都需要注册一个service entity和提供多个API endpoint,用户可以通过endpoint访问资源和执行操作。openstack endpoint create --region RegionOne identity public http://$HOST_NAME:5000/v3 
openstack endpoint create --region RegionOne identity internal http://$HOST_NAME:5000/v3
openstack endpoint create --region RegionOne identity admin http://$HOST_NAME:35357/v3前面两个端点用于专门用于处理内部和外部的访问。后面一个端点专门处理admin。注:Endpoint分为三类:public:对外服务URL(Port:5000); internal:内部访问URL(Port:5000);admin::管理员用户URL(Port:35357)为了便于扩展, Openstack划分了不同的region. 为了简化操作, 这里将所有的Endpoint都放在默认的region, 即RegionOne中.

3.创建域、角色、项目和用户
openstack domain create --description "Default Domain" $DOMAIN_NAME创建默认域openstack project create --domain $DOMAIN_NAME --description "Admin Project" admin
openstack project create --domain $DOMAIN_NAME --description "Service Project" service
openstack project create --domain $DOMAIN_NAME --description "Demo Project" demo创建service、admin、demo三个项目注:admin代表管理组,拥有平台最高权限,可以更新、删除和修改系统任何数据service代表平台内所有服务的总集合,平台安装的所有服务要加入到此租户,此租户可以修改当前租户下所有服务的配置信息,提交租户内容及修改。demo是一个演示测试用户openstack user create --domain $DOMAIN_NAME --password $ADMIN_PASS admin         
openstack role create admin
openstack role add --project admin --user admin admin创建admin用户及admin角色,并把admin角色分配给admin租户和admin用户注:角色代表一组用户可以访问的资源权限,角色决定了用户的权限。这里admin角色代表系统管理员权限;user角色代表普通用户权限拥有系统的正常使用和对当前租户的管理权限。openstack user create --domain $DOMAIN_NAME --password $DEMO_PASS demo
openstack role create user
openstack role add --project demo --user demo user创建demo用户及user角色,并把user角色分配给demo租户和demo用户

六、配置全局变量

unset OS_TOKEN OS_URL删除前面临时设置的变量
1.创建管理用户的环境变量
cat > /etc/keystone/admin-openrc.sh <<-EOF
export OS_PROJECT_DOMAIN_NAME=$DOMAIN_NAME
export OS_USER_DOMAIN_NAME=$DOMAIN_NAME
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=$ADMIN_PASS
export OS_AUTH_URL=http://$HOST_NAME:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
2.创建普通用户的环境变量
cat > /etc/keystone/demo-openrc.sh <<-EOF
export OS_PROJECT_DOMAIN_NAME=$DOMAIN_NAME
export OS_USER_DOMAIN_NAME=$DOMAIN_NAME
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=$DEMO_PASS
export OS_AUTH_URL=http://$HOST_NAME:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
  注:如果不source环境变量使生效,想要用命令访问openstack组件,那就必须添加认证地址和各类信息例:以admin用户的身份请求列出用户:openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name demo --os-user-domain-name demo --os-project-name admin --os-username admin --os-password 000000 --os-identity-api-version 3 user list以demo用户(即普通用户)的身份请求列出用户:(没有权限)openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name demo --os-user-domain-name demo --os-project-name demo --os-username demo --os-password 000000 --os-identity-api-version 3 user list

这篇关于keystone安装小记-先电脚本解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739903

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优