OpenStack Train 部署实战(三)控制节点--keystone服务
参考官网原文链接:
- docs.openstack.org/keystone/tr... ---- Keystone 安装教程的目录
- docs.openstack.org/keystone/tr... ---- Keystone 安装和配置
- docs.openstack.org/keystone/tr... ---- 创建域、项目、用户和角色
- docs.openstack.org/keystone/tr... ---- 验证操作
- docs.openstack.org/keystone/tr... ----- 创建 OpenStack 客户端环境脚本
1️⃣ 创建 Keystone 数据库和用户
-
登录 MySQL(我使用的密码 555555)
mysql -u root -p555555
-
创建 Keystone 数据库并授权
sql
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '555555';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '555555';
flush privileges;
show databases;
select user,host from mysql.user;
exit;
注意 :BY 后面 为实际密码
555555
2️⃣ 安装和配置 Keystone 组件
- 安装 Keystone 和 Apache
bash
yum install -y openstack-keystone httpd mod_wsgi python-keystoneclient
# 用于快速配置
yum install openstack-utils -y
- 添加
[database]部分 和[token]部分
ini
cat >> /etc/keystone/keystone.conf << EOF
[database]
connection = mysql+pymysql://keystone:555555@controller/keystone
[token]
provider = fernet
EOF
bash
# 查看生效的配置
egrep -v "^#|^$" /etc/keystone/keystone.conf
# 其他方式查看生效配置
grep '^[a-z]' /etc/keystone/keystone.conf
- 填充数据库并初始化 Fernet 密钥
bash
# 填充身份服务数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
perl
#查看是否成功
mysql -u keystone -p"555555"
use keystone;
show tables; #有表就行
exit;
- 初始化引导keystone认证服务
css
# 初始化Fernet令牌库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
bash
keystone-manage bootstrap --bootstrap-password 555555 \
--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
-
配置 Apache HTTP 服务
- 配置 Apache 监听控制器主机名
bashsed -i "s/#ServerName www.example.com:80/ServerName controller/" /etc/httpd/conf/httpd.conf- 创建一个链接到
/usr/share/keystone/wsgi-keystone.conf文件:
bashln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/- 启动 Apache 并设置开机自启
bashsystemctl enable httpd systemctl start httpd systemctl list-unit-files |grep httpd.service -
配置管理员环境变量
- 设置环境变量 (当前终端生效)
iniexport OS_USERNAME=admin export OS_PASSWORD=555555 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- 验证认证是否成功
bash# 查看声明的变量 env |grep OS_ echo $OS_USERNAME # 应输出 "admin" echo $OS_AUTH_URL # 应输出 "http://controller:5000/v3"
3️⃣ 创建域、项目、用户和角色
sql
# 创建一个名为example的域
openstack domain create --description "An Example Domain" example
# 创建名为service的项目,在default域中。用于常规(非管理)任务,需要使用无特权用户。
# 以下命令会在project表中创建名为service的项目
openstack project create --domain default --description "Service Project" service
# 创建名为myproject项目,在default域中。作为一般用户(非管理员)的项目,为普通用户提供服务。以下命令会在project表中创建名为myproject项目
openstack project create --domain default --description "Demo Project" myproject
# 创建myuser用户,在default域中。
openstack user create --domain default --password=555555 myuser
# 创建myrole角色,在role表中
openstack role create myrole
# 创建一个默认角色user或者_member_
openstack role create user
# 将myrole角色添加到myproject项目中和myuser用户
openstack role add --project myproject --user myuser myrole
# 查看keystone实例相关信息
openstack endpoint list
openstack project list
openstack user list
4️⃣ 验证操作keystone是否安装成功
- 去除环境变量
关闭临时认证令牌机制,获取 token,验证keystone配置成功
bash
unset OS_AUTH_URL OS_PASSWORD
env |grep OS_
- 作为 管理员admin 用户去请求一个认证的token
arduino
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
# 输入密码:555555
- 使用普通用户获取认证token
以下命令使用"myuser"用户的密码和API端口5000,只允许对身份认证服务API的常规(非管理)访问。
arduino
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
输入密码:555555
5️⃣ 创建OpenStack客户端环境变量脚本
Create OpenStack client environment scripts,上面使用环境变量和命令选项的组合通过"openstack"客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件,我这里使用自定义的文件名
- 创建admin用户的环境管理脚本
ini
cd
touch admin-openrc.sh
# 文件内容
cat << EOF > admin-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=555555
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
- 创建普通用户myuser的客户端环境变量脚本
ini
touch myuser-openrc.sh
# 文件内容
cat << EOF > myuser-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=555555
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
- 测试环境管理脚本
bash
source admin-openrc.sh
openstack token issue
# 列举当前所有域名
openstack domain list
openstack user list
source myuser-openrc.sh
openstack token issue
6️⃣ keystone安装完毕
至此,控制节点的keystone认证服务组件完成安装与配置,现在可以关机做快照
输入shutdown -h now 关机
下一步配置: