此文续接上一篇,openstack2节点通用组件安装,继续部署openstack,本节开始部署keystone组件
Keystone组件是一个身份认证服务,用于管理和验证用户、服务和端点的身份信息。它提供了认证、授权等功能,确保用户和服务能够安全地访问和使用OpenStack云环境。
Keystone 类似一个服务总线,或者说是整个OpenStack框架的注册表,Nova (计算)、Glance (镜像)、Swift (对象存储)、Cinder (块存储)、Neutron(网络),以及 Horizon ( Dashboard)等其他服务,都通过 Keystone 注册其服务端点 Endpoint(服务访问的 URL)。
注意:keystone组件部署在controller节点上
一、创库授权,创建OpenStack库
#这里我们登录mysql数据库,-u root指定root用户登录,-p提示输入密码。输入密码后我们就可以进入数据库了。(密码在openstack2节点通用组件安装设置过)
[root@controller my.cnf.d]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.20-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#创建keystone数据库
MariaDB [(none)]> create database keystone;
#将所有权限授予'keystone',该用户只能从本地主机连接,并使用密码'ks123'进行身份验证。执行成功后有Query OK, 0 rows affected (0.002 sec)提示
MariaDB [(none)]> grant all privileges on keystone .* to 'keystone'@'localhost' identified by 'ks123';
Query OK, 0 rows affected (0.002 sec)
#将所有权限授予'keystone',该用户可以从任何主机('%'通配符代表任何IP地址)连接,并使用密码'ks123'进行身份验证。
MariaDB [(none)]> grant all privileges on keystone .* to 'keystone'@'%' identified by 'ks123';
#重新加载权限表,确保最新的授权修改立即生效。
MariaDB [(none)]> flush privileges;
自此已经完成了,keystone的数据库创建以及授权。我们可以使用exit退出数据库。
二、权限查看(可选)
我们对刚刚创建的数据库查看是否已经授权
#执行"show grants for keystone;"命令,显示给用户"keystone"授予的权限列表。执行"select user,host from mysql.user;"命令,显示所有用户及其对应的主机信息。
我们使用exit退出数据库。
三、安装memcached
在OpenStack中,Memcached是一种内存缓存系统,用于提高OpenStack各个组件之间的性能和响应速度。
安装组件
yum install memcached python-memcached -y
编辑配置文件/etc/sysconfig/memcached在里面写入以下内容:
重启服务并使其开机自启
systemctl enable memcached;systemctl restart memcached
四、安装和配置组件
yum install openstack-keystone httpd mod_wsgi openstack-utils -y
修改配置文件/etc/keystone/keystone.conf,完成以下配置
通过vi或vim编辑器修改配置文件keystone.conf,定位到[database]部分加入框选中的内容,修改connection参数的值,其中对应的参数为:connection=mysql+pymysql://数据库用户名:密码@数据库主机地址/数据库名。
[token]部分包含用于配置Keystone令牌相关设置参数,provider=fernet表示用ferent加密算法生成和管理令牌。
配置完成后保存并退出,初始化数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
-su是切换用户,-s /bin/sh指定要使用的shell,这里指定/bin/sh, -c "keystone-manage db_sync"切换用户后执行引号中的命令,末尾的Keystone表示切换指定的用户Keystone。
综上所述,这条命令以keystone的用户执行了keystone-manage db_sync的命令,用于初始化数据库,初始化后,将自动创建相关预定义表。
五、初始化Fernet keys
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 admin123 \
> --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服务
编辑/etc/httpd/conf/httpd.conf文件,加入ServerName controller
可以使用cat /etc/httpd/conf/httpd.conf | grep controller查看
创建配置链接
在Apache HTTP Server中添加一个软链接,将Keystone身份认证服务的WSGI配置文件wsgi-keystone.conf添加到HTTPD配置目录/etc/httpd/conf.d/中。
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
创建完成后重启httpd,设置开机自启,查看状态
systemctl restart httpd
systemctl enable httpd
systemctl status httpd
八、配置管理员环境变量
编辑admin-openrc文件,加入以下内容
export OS_PROJECT_DOMAIN_NAME=Defualt
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
这里我使用了cat命令查看了admin-openrc文件
export OS_PROJECT_DOMAIN_NAME=Default:设置项目域名为Default,用于身份认证。
export OS_USER_DOMAIN_NAME=Default:设置用户域名为Default,用于身份认证。
export OS_PROJECT_NAME=admin:设置项目名为admin,用于身份认证。
export OS_USERNAME=admin:设置用户名为admin,用于身份认证。
export OS_PASSWORD=admin123:设置密码为admin123,用于身份认证。
export OS_AUTH_URL=http://controller:5000/v3:设置认证URL为http://controller:5000/v3,用于身份认证。
export OS_IDENTITY_API_VERSION=3:身份认证API版本为3。
export OS_IMAGE_API_VERSION=2:镜像服务API版本为2。
给予admin-openrc文件权限,并运行。
chmod +x admin-openrc
source admin-openrc
注意如果在以后过程中关闭虚拟机,再次开启后务必重新执行source admin-openrc
九、验证token
openstack token issue
该命令将向OpenStack认证服务发送请求,以使用之前设置的用户名、密码和认证URL进行身份验证。如果身份验证成功,将返回包含访问令牌和其他相关信息的输出。
十、创建域、项目、用户、角色
注意如果在创建时出现Missing value auth-url required for auth plugin password可以重新检查一下第八结的admin-openrc文件,并重新运行
创建项目service
openstack project create --domain default --description "Service Project" service
查看项目
openstack project list
创建myproject项目
openstack project create --domain default --description "Demo Project" myproject
创建myuser账户,这里需要设置密码(自己设置即可),密码是不显示的。
openstack user create --domain default --password-prompt myuser
创建myrole角色
openstack role create myrole
将myuser添加至myproject项目中并赋予myrole角色
openstack role add --project myproject --user myuser myrole
十一、验证角色
经过一顿噼里啪里的操作,角色,项目是否已经创建,下面这些命令可以查看。
openstack role list
openstack project list
openstack user list
openstack role assignment list
十二、创建客户端环境脚本
vi myuser-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=myz123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
保存退出后增加权限
chmod +x myuser-openrc