OpenStack之keystone组件部署
前言:Keystone部署在控制节点上,用以为OpenStack提供身份认证服务,之后OpenStack的所有核心服务组件都要依靠keystone来识别认证租户的权限。
一、进入mariadb,创建keystone的用户和数据库
创建db create database keystone; 创建用户keystone并给与它keystone库的所有权限 grant all privileges on keystone.* to 'keystone'@'%' identified by 'keystone';
刷新
flush privileges;
二、离开数据库,正式开始部署keystone服务
安装、配置keystone、数据库、Apache
● 安装keystone、httpd、mod_wsgi
#mod_wsgi包的作用是让apache能够代理pythone程序的组件;openstack的各个组件,包括API都是用python写的,但访问的是apache,apache会把请求转发给python去处理,这些包只安装在controler节点
[root@ct ~]# cp -a /etc/keystone/keystone.conf{,.bak} [root@ct ~]# grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
#通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名
[root@ct ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone #指定token的提供者;提供者就是keystone自己本身 [root@ct ~]# openstack-config --set /etc/keystone/keystone.conf token provider fernet Fernet:一种安全的消息传递格式
初始化认证服务数据库 [root@ct ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone 初始化fernet 密钥存储库(以下命令会生成两个密钥,生成的密钥放于/etc/keystone/目录下,用于加密数据) [root@ct keystone]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone [root@ct keystone]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
三、keystone组件基于Apache来提供服务,因此不需要启动keystone,只需要启动httpd
编辑httpd的配置文件 vim /etc/httpd/conf/httpd.conf 要修改的项为: ServerName controller1 为httpd和keystone的启动方式建立链接 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ 启动httpd systemctl enable httpd systemctl restart httpd 配置admin超级管理员账户信息 cat > /root/openrc <<EOF export OS_USERNAME=admin export OS_PASSWORD=admin export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://controller1:35357/v3 export OS_IDENTITY_API_VERSION=3 EOF source openrc 创建一个服务项目以管理我们为OpenStack添加的每一个服务 openstack project create --domain default \ --description "Service Project" service
四、检查一下是否按照我们的要求成功部署
[root@ct ~]# openstack user list +----------------------------------+-------+ | ID | Name | +----------------------------------+-------+ | b2cb38518ef74ae9b8f60989e494924c | admin | +----------------------------------+-------+ [root@ct ~]# openstack project create --domain default --description "Service Project" service +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Service Project | | domain_id | default | | enabled | True | | id | c54d8300ca20439797f28d76fed9a408 | | is_domain | False | | name | service | | options | {} | | parent_id | default | | tags | [] | +-------------+----------------------------------+ [root@ct ~]# openstack role create user +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | None | | domain_id | None | | id | cbc2277f880e4abf9a4c52dc068fcb5f | | name | user | | options | {} | +-------------+----------------------------------+ [root@ct ~]# openstack role list +----------------------------------+--------+ | ID | Name | +----------------------------------+--------+ | 7ebcb4ffb3d64ecb88f45d82bf404e8c | reader | | 8318386b7567422e822f46cbc64d5951 | member | | cbc2277f880e4abf9a4c52dc068fcb5f | user | | cd50d8b7fc404008800b4e764a02e6c9 | admin | +----------------------------------+--------+ [root@ct ~]# openstack token issue +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | expires | 2020-12-15T12:17:41+0000 | | id | gAAAAABf2JtV0YnCvoFrORrVLy2ZEfonOOSONTglBg0tOqoMRBEzr9zvzaqbUmLV69KH9DoSip8oSZ2C-j68tl10cuywrHBbr0mu1r4sCPhHXExBlvZ_EdqRVXG5QWbk-3_zsCM-iy0mEcQKFOoEvHVIm52JCxDxJ0qdBDB1mHOkU1KL0quP5r4 | | project_id | 021a9fa5c0f84803a9798acec74c70cb | | user_id | b2cb38518ef74ae9b8f60989e494924c | +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
小结
Keystone 组件是作为OpenStack 集群中统一认证、授权的模块,其核心功能就是针对于User(用户)、Tenant(租户)、Role(角色)、Token(令牌/凭证)的控制(手工编译部署即围绕此功能展开的)
User:使用 openstack 的用户。
Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。
Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。
Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源的范围和有效时间,token 是用户的一种凭证,需要使用正确的用户名和密码向 Keystone 服务申请才能得到 token。
使用手动部署的模式搭建OpenStack的思路:
1、分模块部署
2、部署keystone模块的基础环境(下载依赖包、组件包、第三方工具/插件)
3、创建、开启此模块的功能(以keystone为例,创建并初始化认证数据库、修改配置文件、初始化密钥-fernet格式、配置身份认证服务)
4、验证