一、新建数据库及用户(控制节点)
登录数据库,创建db以及用户:
CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone2018'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone2018'; flush privileges; exit;
二、安装keystone(控制节点)
安装软件包:
yum install -y openstack-keystone httpd mod_wsgi
修改keystone配置文件
vim /etc/keystone/keystone.conf
编辑模式下(冒号)
删除#开头行 %g/^#/d
删除空白行 %g/^$/d
[database] connection = mysql://keystone:keystone2018@localhost/keystone #此处不知道为啥,写主机名跟IP都不能初始化数据库,只有localhost可以 [token] provider = fernet
#配置Fernet UUID令牌的提供者
初始化数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化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 123456 --bootstrap-admin-url http://10.1.80.110:35357/v3/ --bootstrap-internal-url http://10.1.80.110:5000/v3/ --bootstrap-public-url http://10.1.80.110:5000/v3/ --bootstrap-region-id RegionOne #记住RegionOne
配置apache httpd
vim /etc/httpd/conf/httpd.conf
#修改ServerName ServerName 10.1.80.110:80
配置wsgi模块软件连接
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动httpd
systemctl enable httpd.service systemctl start httpd.service systemctl status httpd.service
查看35357和5000端口有没有被监听
netstat -anpt | grep http
三、创建域、项目、用户、角色(控制节点)
使用环境变量:
export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=123456 export OS_AUTH_URL=http://10.1.80.110:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
创建一个服务项目,名称是“service”,该服务项目包含唯一用户,它是添加到环境的所有服务的用户:
openstack project create --domain default --description "Service Project" service
查看:
openstack project list
注意,其中的admin项目是自动创建的,不需要手工创建。
创建demo项目:
openstack project create --domain default --description "Demo Project" demo
创建“demo”用户并设置密码:
openstack user create --domain default --password-prompt demo #创建demo用户并输入密码demo2018
创建“user”角色:
openstack role create user
为“demo”项目的“demo”用户添加“user”角色:
openstack role add --project demo --user demo user
四、测试令牌是否正常
取消以下两个环境变量
unset OS_AUTH_URL OS_PASSWORD
尝试用admin用户请求一个令牌看是否正常
openstack --os-auth-url http://10.1.80.110:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
尝试用demo用户请求一个令牌看是否正常
openstack --os-auth-url http://10.1.80.110:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue
五、为admin和demo用户创建环境变量脚本
以上过程命令长、参数多,为了简化,分别为admin/demo用户创建环境变量脚本:
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=123456 export OS_AUTH_URL=http://10.1.80.110:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
demo-openrc脚本:
export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=demo2018 export OS_AUTH_URL=http://10.1.80.110:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
测试脚本使用
source admin-openrc openstack token issue admin用户请求令牌 source demo-openrc openstack token issue demo用户请求令牌
六、keystone服务正常测试
从各节点访问keystone服务,验证是否正常
curl http://10.1.80.110:35357/v3
curl http://10.1.80.110:5000/v3
查看创建的Identity服务及其endpoint:
source admin-openrc openstack service list openstack endpoint list