首页 > 数据库 > 数据库开发技术 > OpenStack离线Train版安装(四)
官方参考:openstack-services,keystone-install
使用mysql数据库的root账户登录,密码为控制节点环境准备时初始化mysql数据设置的密码为root。
mysql -u root -proot
create database keystone;
grant all privileges on keystone.* to 'keystone'@'localhost' \
identified by 'keystone';
grant all privileges on keystone.* to 'keystone'@'%' \
identified by 'keystone';
flush privileges;
show databases;
select user,host from mysql.user;
exit
配置Apache服务,使用带有“mod_wsgi”的HTTP服务器来相应认证服务请求,端口为5000和35357, 默认情况下,Kestone服务仍然监听这些端口
yum install openstack-keystone httpd mod_wsgi -y
#用于快速配置
yum install openstack-utils -y
下面使用的快速配置方法需要安装openstack-utils才可以实现
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:keystone@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
注意:keystone不需要连接rabbitmq
查看生效的配置
egrep -v "^#|^$" /etc/keystone/keystone.conf
其他方式查看生效配置
grep '^[a-z]' /etc/keystone/keystone.conf
keystone不需要启动,通过http服务进行调用。
同步keystone数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
mysql -ukeystone -pkeystone -e "use keystone;show tables;"
mysql -h10.224.24.161 -ukeystone -pkeystone -e "use keystone;show tables;"|wc -l
Initialize Fernet key repositories,关于Fernet令牌的介绍Keystone Fernet tokens
以下命令无返回信息
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
(1)创建 keystone 用户,初始化的服务实体和API端点创建用户:需要创建一个密码ADMIN_PASS,作为登陆openstack的admin管理员用户,这里密码也创建为admin。创建keystone服务实体和身份认证服务,以下三种类型分别为公共的、内部的、管理的。
在endpoint表增加3个服务实体的API端点在local_user表中创建admin用户在project表中创建admin和Default项目(默认域)在role表创建3种角色,admin,member和reader,即公共的、内部的、管理的。在service表中创建identity服务
keystone-manage bootstrap --bootstrap-password admin \
--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
思考:
①此处的controller是否可以考虑换为管理网的IP地址,以便其他主机方便调用API,或者在其他主机配置主机文件controller为相应的IP地址。
②在之前的版本(queens之前),引导服务需要2个端口提供服务(用户5000和管理35357),本版本通过同一个端口提供服务
③关于访问地址endpoint表:keystone介绍,keystone介绍与安装endpoint是一个网络上可访问的地址,通常是一个 URL。service 通过endpoint 暴露自己的 API。keystone负责管理和维护每个service的endpoint。可以使用下面的命令来查看endpoint。
(2)临时配置管理员账户的相关变量进行管理
这里的export OS_PASSWORD要使用上面配置的ADMIN_PASS
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://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
查看声明的变量
env |grep OS_
(3)查看catalog信息
openstack catalog list
[root@controller ~]# openstack catalog list
+----------+----------+----------------------------------------+
| Name | Type | Endpoints |
+----------+----------+----------------------------------------+
| keystone | identity | RegionOne |
| | | internal: http://controller:5000/v3/ |
| | | RegionOne |
| | | admin: http://controller:5000/v3/ |
| | | RegionOne |
| | | public: http://controller:5000/v3/ |
| | | |
+----------+----------+----------------------------------------+
[root@controller ~]#
附:常用的openstack管理命令,需要应用管理员的环境变量
查看keystone实例相关信息
openstack endpoint list
openstack project list
openstack user list
删除endpoint
openstack endpoint delete [ID]
(1)修改httpd主配置文件
sed -i "s/#ServerName controller/" /etc/httpd/conf/httpd.conf
或者
vim /etc/httpd/conf/httpd.conf
95行更改成如下:
ServerName controller
(2)配置虚拟主机
创建keystone虚拟主机配置文件的快捷方式,也可以复制过来
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
(3)启动httpd并配置开机自启动如果http起不来,需要关闭 selinux 或者安装 yum install openstack-selinux
systemctl start httpd.service
systemctl status httpd.service
netstat -anptl|grep httpd
systemctl enable httpd.service
systemctl list-unit-files |grep httpd.service
至此,http服务配置完成
(1)【非必须】 创建一个名为example的域在project表中创建名为example的项目
openstack domain create --description "An Example Domain" example
(2)【必须】 创建名为service的项目,在default域中。用于常规(非管理)任务,需要使用无特权用户。以下命令会在project表中创建名为service的项目
openstack project create --domain default \
--description "Service Project" service
(3)【非必须】 创建名为myproject项目,在default域中。
作为一般用户(非管理员)的项目,为普通用户提供服务。以下命令会在project表中创建名为myproject项目
openstack project create --domain default \
--description "Demo Project" myproject
(4)【非必须】 创建myuser用户,在default域中。以下命令会在local_user表增加myuser用户。使用–password选项为直接配置明文密码,使用–password-prompt选项为交互式输入密码直接创建用户和密码
openstack user create --domain default --password=myuser myuser
或者交互式输入密码
openstack user create --domain default --password-prompt myuser
(5)【非必须】 创建myrole角色,在role表中。
openstack role create myrole
【必须】 但是需要创建一个默认角色user或者member
openstack role create user
原因:/etc/openstack-dashboard/local_settings文件配置中填写的是user
vim /etc/openstack-dashboard/local_settings
#OPENSTACK_HOST = "127.0.0.1"
OPENSTACK_HOST = "controller"
#unchanged
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
#add new
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
具体影响,OpenStack离线Train版安装系列—13 控制节点-Horizon服务组件
(6)将myrole角色添加到myproject项目中和myuser用户以下命令无返回,数据表操作不太明显
openstack role add --project myproject --user myuser myrole
具体问题参考:具体影响,13 控制节点-Horizon服务组件,亦可在上一步(5)的操作中,keystone创建的时候角色名称修改为member
(7)查看keystone实例相关信息
openstack endpoint list
openstack project list
openstack user list
关闭临时认证令牌机制,获取 token,验证keystone配置成功
unset OS_AUTH_URL OS_PASSWORD
env |grep OS_
测试是否可以使用admin账户进行登陆认证,请求认证令牌
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
输入密码:admin
以下命令使用”myuser“用户的密码和API端口5000,只允许对身份认证服务API的常规(非管理)访问。
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
输入密码:myuser
Create OpenStack client environment scripts,上面使用环境变量和命令选项的组合通过“openstack”客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件,我这里使用自定义的文件名
cd
touch admin-openrc.sh
vim admin-openrc.sh
文件内容
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://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
cd
touch myuser-openrc.sh
vim myuser-openrc.sh
文件内容
export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_PROJECT_NAME=myproject
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-openrc.sh
openstack token issue
source myuser-openrc.sh
openstack token issue
可以看到user_id和上面用命令获取到的是一样的,说明配置成功
至此,控制节点的keystone认证服务组件完成安装与配置。
欢迎关注我的微信公众号【超哥的IT私房菜】获取更多技术干货!
有什么吐槽或反馈意见,直接告诉我!
我会解决您说的问题,进一步更好的服务您哦!
温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469。
原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。