Keystone 安装脚本,用于安装和配置 OpenStack 中的 Keystone 服务,Keystone 是 OpenStack 的身份认证服务。脚本三大模块:数据库设置,Keystone 服务启动,最后设置了管理员用户并验证了安装。
基本知识点回顾:
域:OpenStack默认存在“Default”域,如果没有另外创建域,所有项目和用户都将属于“Default”域。域是项目和用户的集合
项目:OpenStack自带“admin”项目。
角色:角色是预定义的权限集合。OpenStack自带两个预定义角色,即“admin”和“member”,“member”角色集合了普通用户的访问权限,而“admin”角色集合了对整个OpenStack进行管理的特权。
用户:用户是任何拥有身份验证信息来使用OpenStack的实体,OpenStack中自带“admin”用户,该用户属于“admin”项目并且分配有“admin”角色。
“”赋予用户什么样子的角色,例如:赋予小明(用户)班长的职责(权限)”
以智慧农业项目为例

在安装和配置身份服务之前,必须创建一个数据库。
在安装和配置身份服务之前,必须创建一个数据库。
在安装和配置身份服务之前,必须创建一个数据库。
脚本文件名称设置 install_keystone.sh
1. 设置环境变量
DB_PASS=000000
KEYSTONE_DBPASS=000000
HOST_NAME=control
DOMAIN_NAME="default"
ADMIN_PASS=000000
这段代码设置了环境变量,作为脚本中的常量,方便后续代码使用:
- DB_PASS:MySQL 的 root 用户密码,用于连接 MySQL 数据库。
- KEYSTONE_DBPASS:Keystone 服务数据库的用户密码。
- HOST_NAME:Keystone 服务所在的服务器的主机名,用于配置连接。
- DOMAIN_NAME:OpenStack 使用的域名,通常是“default”。
- ADMIN_PASS:管理员账户的密码。
这些变量在脚本中多次使用,只需要在这里修改一次即可。
2.配置keystone组件
首先创建安装keystone数据库,这里提供的是手动创建的方法,较为灵活
第1步,用下面的方法进入MariaDB数据库服务器。
账号root,密码000000
[root@controller ~]# mysql -uroot -p000000
第2步,新建“keystone”数据库。
MariaDB [(none)]> CREATE DATABASE keystone;
SQL命令需要以英文“;”作为结束符。
第3步,给用户授权使用新建数据库。
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '000000';
上面两条语句把“keystone”数据库的所有表(keystone.*)的所有权限(ALL PRIVILEGES)授予本地主机(‘localhost’ )及任意远程主机(‘%’)中名为“keystone”的用户,验证密码为“000000”。这里的“keystone”用户是安装Keystone组件时自动生成的系统用户。
第4步,安装组件
dnf install openstack-keystone httpd python3-mod_wsgi
keystone实际是运行在WSGI(Web Server Gateway Interface)的Web应用。因此这里安装了3个软件:“openstack-keystone”“httpd”“mod_wsgi”。
- “openstack-keystone”是Keystone的软件包;
- “httpd”是阿帕奇(Apache)Web服务器的软件包名;
- “mod_wsgi”是使Web服务器支持WSGI的插件。
第5步,修改配置
1.首先修改“[database]”部分实现与数据库连接。用“keystone”用户和密码“000000”去连接“controller”主机中的名为“keystone”的数据库。
vi /etc/keystone/keystone.conf
connection = mysql+pymysql://keystone:000000@controller/keystone
2.修改“[token]”部分配置令牌的加密方式。
provider = fernet
3.手动将数据导入数据库中
keystone -s /bin/sh -c "keystone-manage db_sync"
第6步,配置表Web服务
Keystone实际上是一个运行在支持WSGI的Web服务器上的应用,所以要为它先配置好Web服务。这里采用的是Apache服务器,它是一个常见的Web服务器,它的服务名为“httpd”
1.给Apache服务器提供WSGI支持
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
2.修改Apache服务器配置
vi /etc/httpd/conf/httpd.conf
ServerName controller
3.重启Apache服务
首先,设置开机重启Apache服务。
systemctl enable httpd
然后,立即启动Apache服务。
systemctl start httpd
第7步,创建初始化环境变量文件
通过环境变量可以传送用户名及密码等凭证给Keystone,再由它进行验证
[root@controller ~]# vi admin-login
export OS_USERNAME=admin
export OS_PASSWORD=000000
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
导入环境变量
source admin-login
3.检测keystone服务的安装部署
1.创建与查阅项目列表
用以下命令在默认域中创建一个名为“project”的项目
openstack project create --domain default project
openstack project delete aaa
用以下代码查看现有的项目列表
openstack project list
为OpenStack云计算平台创建一个名为“user”的角色
openstack role create user
查看OpenStack云计算平台现有的角色列表
openstack role list
4.脚本文件
#!/bin/bash
# 设置环境变量
# DB_PASS: MySQL root 用户的密码
# KEYSTONE_DBPASS: Keystone 数据库用户的密码
# HOST_NAME: 主机名,Keystone 服务所在的服务器名称
# DOMAIN_NAME: OpenStack 域名,默认为"default"
# ADMIN_PASS: OpenStack 管理员用户的密码
DB_PASS=000000
KEYSTONE_DBPASS=000000
HOST_NAME=control
DOMAIN_NAME="default"
ADMIN_PASS=000000
# MySQL:创建数据库并授权
# 1. 如果keystone数据库不存在创建 Keystone 数据库
mysql -uroot -p$DB_PASS -e "CREATE DATABASE IF NOT EXISTS keystone;"
# 2. 授权 Keystone 用户访问数据库
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '$KEYSTONE_DBPASS';"
# 3. 授权 Keystone 用户通过任何主机访问数据库
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '$KEYSTONE_DBPASS';"
# 安装 Keystone 及其依赖
# 1. 安装 OpenStack Keystone 服务、Apache HTTP 服务器和 mod_wsgi 模块
yum install openstack-keystone httpd mod_wsgi -y
# 配置 Keystone
# 1. 修改 Keystone 配置文件 /etc/keystone/keystone.conf,设置数据库连接信息
crudini --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:$KEYSTONE_DBPASS@$HOST_NAME/keystone
# 2. 设置 Keystone 使用 Fernet 令牌提供者
crudini --set /etc/keystone/keystone.conf token provider fernet
# 生成一个随机管理员令牌
# 1. 使用 openssl 生成一个随机的 10 字符管理员令牌
ADMIN_TOKEN=$(openssl rand -hex 10)
# 2. 将生成的管理员令牌写入 Keystone 配置文件
crudini --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN
# 同步 Keystone 数据库并设置 Fernet 和凭证
# 1. 使用 keystone-manage 工具同步数据库
keystone-manage db_sync
# 2. 使用 keystone-manage 设置 Fernet(加密密钥)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# 3. 使用 keystone-manage 设置凭证
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# 配置 Apache
# 1. 修改 Apache 配置文件,将 ServerName 设置为主机名
sed -i "s/#ServerName www.example.com:80/ServerName $HOST_NAME/g" /etc/httpd/conf/httpd.conf
# 2. 为 Keystone 创建 Apache 配置文件的符号链接
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
# 启动并重启 Apache 服务
# 1. 设置 Apache 服务为开机启动
systemctl enable httpd.service
# 2. 重启 Apache 服务使配置生效
systemctl restart httpd.service
# 设置 OpenStack 环境变量
# 1. 设置 OpenStack 使用管理员令牌和主机名进行身份验证
export OS_TOKEN=$ADMIN_TOKEN
export OS_URL=http://$HOST_NAME:35357/v3
export OS_IDENTITY_API_VERSION=3
# 创建 OpenStack 服务和端点
# 1. 创建 OpenStack Identity 服务
openstack service create --name keystone --description "OpenStack Identity" identity
# 2. 创建公开端点
openstack endpoint create --region RegionOne identity public http://$HOST_NAME:5000/v3
# 3. 创建内部端点
openstack endpoint create --region RegionOne identity internal http://$HOST_NAME:5000/v3
# 4. 创建管理员端点
openstack endpoint create --region RegionOne identity admin http://$HOST_NAME:35357/v3
# 创建 OpenStack 域、项目和用户
# 1. 创建默认域
openstack domain create --description "Default Domain" $DOMAIN_NAME
# 2. 创建管理员项目
openstack project create --domain $DOMAIN_NAME --description "Admin Project" admin
# 3. 创建管理员用户,并为其设置密码
openstack user create --domain $DOMAIN_NAME --password $ADMIN_PASS admin
# 4. 创建管理员角色
openstack role create admin
# 5. 将管理员角色分配给管理员用户
openstack role add --project admin --user admin admin
# 创建 OpenRC 环境配置文件(用于管理用户登录)
# 1. 为管理员用户创建 OpenRC 配置文件,便于以后通过命令行管理 OpenStack
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:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
# 验证 OpenStack 配置是否成功
# 1. 加载管理员 OpenRC 配置文件
source /etc/keystone/admin-openrc.sh
# 2. 使用 OpenStack CLI 验证管理员令牌
openstack token issue

2839

被折叠的 条评论
为什么被折叠?



