在OpenStack的框架体系中Keystone的作用类似于一个服务总线,为OpenStack提供身份管理服务,包括用户认证,服务认证和口令认证,其他服务通过Keystone来注册服务的Endpoint(端点),针对服务的任何调动都要通过Keystone的身份认证,并获得Endpoint(端点)来进行访问。
部署顺序
keystone组件是第一个要安装的组件,其他组件之间通信都是需要通过keystone进行认证;
然后,glance组件负责镜像管理,启动实例时提供镜像服务,可存储各个不同操作系统的镜像;
然后,placement组件,负责为nova提供资源的监控的功能;
然后,nova组件负责管理实例,创建、删除、管理等操作;
最后,neutron组件负责网络,二层和三层网络,通过linuxbridge网桥来镜像连接;
dashboard提供一个图形界面,在web页面可以启动实例,创建网络等等操作;
cinder组件提供一个额外的volume存储卷,启动实例的时候可以创建卷给他绑定上去,自己搭建练习,有没有都行;
keystone数据库配置
controller节点
在安装和配置keystone身份服务之前,必须创建服务对应的数据库用于存储相关数据
然后授权keystone用户本地访问和远程访问两种访问权限
mysql -u root -p123456
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123';
keystone服务安装配置
安装keystone、httpd、mod_wsgi软件(mod_wsgi会提供一个对外的api接口用于接收请求)
yum -y install openstack-keystone httpd mod_wsgi
#查看文件属性
ll /etc/keystone/keystone.conf
-rw-r----- 1 root keystone 140415 6月12 2023 /etc/keystone/keystone.conf
#提前备份配置文件
cp /etc/keystone/keystone.conf{,.bak}
#重新生成配置文件
egrep -v '^#|^$' /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf
/etc/keystone/keystone.conf
#修改文件内容
vim /etc/keystone/keystone.conf
[database]
#配置keystone访问数据库的密码
connection =
mysql+pymysql://keystone:123@controller/keystone
[token]
#配置Fernet令牌,方便其他程序通过令牌来连接keyston进行验证
provider = fernet
初始化数据库,keystone服务会向数据库中导入表结构
su -s /bin/sh -c "keystone-manage db_sync" keystone
查看数据库验证
mysql -u keystone -p123
use keystone
show tables;
初始化Fernet密钥存储库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone--keystone-group keystone
keystone-manage bootstrap --bootstrap-password 123 \
--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
配置HTTP服务
配置 ServerName选项为控制器节点名称
vim /etc/httpd/conf/httpd.conf
创建文件链接,这个文件是keystone给生成好的,用于访问keystone的5000端口
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable httpd.service && systemctl start httpd.service
netstat -tunpl | grep httpd
export OS_USERNAME=admin
export OS_PASSWORD=123
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
创建认证账号
User 用户: User 就是用户,它代表可以通过 keystone 进行访问的人或者程序;Role 角色: Role 代表一组用户可以访问的资源权限,用户可以使用角色从而获得该角色的权限;project 项目:他是各个服务中一些可以访问的资源集合,例如:镜像,存储,网络等资源; domain 域: Domain 的概念实现真正的多租户架构。云服务的客户是 Domain 的所有者,他们可以在自己的 Domain 中创建多个 Projects、 Users 、 Groups 和 Roles ;
controller节点
openstack domain create --description "An Example Domain" example
#查看域列表
openstack domain list
查看对于域可进行的操作如下:
[root@controller ~]# openstack domain --help
#查看指定域详细信息
openstack domain show default
+-------------+--------------------+| Field | Value |+-------------+--------------------+| description | The default domain || enabled | True || id | default || name | Default || options | {} || tags | [] |+-------------+--------------------+
创建project项目:项目名称service,并指定放在default域中
openstack project create --domain default \
--description "Service Project" service
#查看项目列表
openstack project list
#查看指定项目详细信息
openstack project show service
openstack project create --domain default \
--description "Demo Project" myproject
创建非特权user用户:用户名称myuser ,用户的密码:123
openstack user create --domain default \
--password-prompt myuser
#查看用户列表
openstack user list
admin 是openstack自带的管理员用户
#查看可进行的操作
openstack user list
#查看指定用户详细信息
openstack user show myuser
openstack role create myrole
#查看指定角色详细信息
openstack role show myrole
角色绑定:myrole角色绑定到myuser用户与myproject项目上
openstack role add --project myproject --user myuser
myrole
取消环境变量
unset OS_AUTH_URL OS_PASSWORD
#以admin用户获取token令牌
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
注意:这里要输入密码
#以myuser用户获取token令牌
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
创建环境变量脚本
在 OpenStack 环境中执行命令的时候需要验证用户身份,而用户身份在Open Stack中通过环境变量的方式来定义与切换,但是这些参数是非常多而且长的,每次输入一次命令就要加上这些参数为了简化,可以将变量写入脚本,使用的时候只需要执行不同的脚本就可以切换用户身份,方便!
#admin用户脚本(用户密码:123)
vim admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
#myuser用户脚本(用户密码:123)
vim demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
source admin-openrc
#查看自己的token令牌
openstack token issue
source demo-openrc
#查看自己token令牌
openstack token issue