当前位置: 代码迷 >> 综合 >> 解读先电2.4版 iaas-install-keystone.sh 脚本
  详细解决方案

解读先电2.4版 iaas-install-keystone.sh 脚本

热度:96   发布时间:2023-11-25 11:01:18.0
#!/bin/bash						#声明解释器路径
source /etc/xiandian/openrc.sh	#生效环境变量
#keystone mysqlmysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS keystone ;"		 					#登录MySQL数据库,创建keystone数据库
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '$KEYSTONE_DBPASS' ;"		#登录MySQL数据库,创建数据库用户keystone,授权keystone用户拥有从本地访问keystone数据库的所有权限,并设置数据库用户keystone的密码
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '$KEYSTONE_DBPASS' ;"		#登录MySQL数据库,创建数据库用户keystone,授权keystone用户拥有从远程访问keystone数据库的所有权限,并设置数据库用户keystone的密码
#install keystoneyum install openstack-keystone httpd mod_wsgi -y	 #安装keystone服务软件包mod_wsgi:python应用程序与web服务器之间的一种接口,定义了一套接口来实现服务器与应用端的通信规范
#/etc/keystone/keystone.confcrudini --set /etc/keystone/keystone.conf database connection  mysql+pymysql://keystone:$KEYSTONE_DBPASS@$HOST_NAME/keystone		#配置数据库连接#pymysql是一个python库,用于数据库的连接,设置MySQL和Python连接。
crudini --set /etc/keystone/keystone.conf token provider  fernet		 #安全消息传递格式
ADMIN_TOKEN=$(openssl rand -hex 10)			 #随机生成20位的字符串赋给ADMIN_TOKEN,创建令牌
crudini --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN#openssl :一个强大的安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议
su -s /bin/sh -c "keystone-manage db_sync" keystone		 #为keystone服务创建数据库表
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone		 #初始化Fernet密钥存储用于token加密,创建签名密钥
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone		#创建证书
sed -i "s/#ServerName www.example.com:80/ServerName $HOST_NAME/g" /etc/httpd/conf/httpd.conf 		 配置Apache HTTP Server:修改/etc/httpd/conf/httpd.conf配置文件将ServerName www.example.com:80 替换为ServerName controller(因为我们的Apache是安装在controller上的)

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/   #创建/etc/httpd/conf.d/wsgi-keystone.conf文件来启用认证服务的虚拟主机(两个虚拟主机,一个监听5000端口,一个监听35357端口)
systemctl enable httpd.service
systemctl restart httpd.service
export OS_TOKEN=$ADMIN_TOKEN				#设置操作系统临时环境变量:校验令牌
export OS_URL=http://$HOST_NAME:35357/v3	#设置操作系统临时环境变量:端点URL
export OS_IDENTITY_API_VERSION=3			#设置操作系统临时环境变量:标识API版本——默认情况下,认证服务的数据库中没有任何信息来支持会话校验和目录服务,所以我们必须用一个临时的校验令牌为认证服务初始化服务实体和API端点
openstack service create --name keystone --description "OpenStack Identity" identity		 #创建keystone身份认证服务
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端点
#创建域、租户、用户和角色openstack domain create --description "Default Domain" $DOMAIN_NAME						# 创建默认域openstack project create --domain $DOMAIN_NAME --description "Admin Project" admin		# 创建admin租户,拥有平台最高权限
openstack user create --domain $DOMAIN_NAME --password $ADMIN_PASS admin				# 创建admin用户
openstack role create admin		 														# 创建admin权限
openstack role add --project admin --user admin admin									# 授予admin用户admin权限openstack project create --domain $DOMAIN_NAME --description "Service Project" service	# 创建service租户,代表平台内所有的服务openstack project create --domain $DOMAIN_NAME --description "Demo Project" demo		# 创建demo租户,演示测试的普通用户
openstack user create --domain $DOMAIN_NAME --password $DEMO_PASS demo					#  创建demo(普通)用户
openstack role create user		 														# 创建普通用户权限
openstack role add --project demo --user demo user		 								# 授予demo用户普通用户权限——认证服务Keystone为OpenStack服务和位置提供了一个目录
——OpenStack的所有服务在Keystone提供的目录中必须要有一个服务实例(service entity)和几个API端点(endpoint)
——Openstack为每个服务提供了三种API端点:admin、internal和public
——默认情况下,admin API endpoint 允许修改用户和租户(项目),而public和internal API不可以
——在生产环境中,出于安全的原因,这三种不同的API端点位于不同的网络以服务不同类型的用户。例如:public API网络可用于云环境外的管理工具连接,而admin API网络可用于内部连接各主机进行管理操作——为非管理的一般性任务而会创建一个权限受限的普通项目(租户)demo和用户demo
unset OS_TOKEN OS_URL		#清除环境变量
cat > /etc/keystone/admin-openrc.sh <<-EOF		#创建OpenStack客户端脚本---admin用户脚本
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:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOFcat > /etc/keystone/demo-openrc.sh <<-EOF		#创建OpenStack客户端脚本---demo用户脚本
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:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF——身份认证服务为OpenStack的所有服务提供了校验的服务
——校验服务会联合使用域名、项目(租户)、用户和角色完成校验
source /etc/keystone/admin-openrc.sh 	#生效admin用户脚本
openstack token issue					#获取token
  相关解决方案