当前位置 : 主页 > 编程语言 > 其它开发 >

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

来源:互联网 收集:自由互联 发布时间:2022-05-30
解读先电2.4版 iaas-install-keystone.sh 脚本 #!/bin/bash#声明解释器路径source /etc/xiandian/openrc.sh#生效环境变量 #keystone mysqlmysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS keystone ;" #登录MySQL数据库,
解读先电2.4版 iaas-install-keystone.sh 脚本 解读先电2.4版 iaas-install-keystone.sh 脚本
#!/bin/bash			#声明解释器路径
source /etc/xiandian/openrc.sh	#生效环境变量


#keystone mysql

mysql -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 keystone

yum install openstack-keystone httpd mod_wsgi -y	 #安装keystone服务软件包

mod_wsgi:python应用程序与web服务器之间的一种接口,定义了一套接口来实现服务器与应用端的通信规范


#/etc/keystone/keystone.conf

crudini --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
EOF

cat > /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

上一篇:Django Cas服务搭建与打包
下一篇:没有了
网友评论