创建数据库
使用root账户登录数据库
sudo mysql
创建keystone数据库
create database keystone
设置数据库本地与远程访问的权限
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
替换KEYSTONE_DBPASS为你自己的密码
安装配置组件
安装组件
sudo apt install keystone apache2 libapache2-mod-wsgi
由于keystone组件要运行在apache http服务上,所以也要安装apache http服务
修改/etc/keystone/keystone.conf文件
在[database]部分,配置数据库访问
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
替换KEYSTONE_DBPASS为自己的密码;并且注释或者删除其他connection项
在[token]部分,配置token生成的方式
provider = fernet
导入认证服务的数据库
sudo -s /bin/sh -c "keystone-manage db_sync" keystone
初始化 Fernet key
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 ADMIN_PASS \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:35357/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
替换ADMIN_PASS为自己的密码
配置apache http服务
修改/etc/apache2/apache2.conf文件
ServerName controller
controller为控制节点主机名
完成安装
重启apache服务
sudo service apache2 restart
配置管理账户
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
替换ADMIN_PASS为你自己设置的密码
创建域,项目,用户和角色
keystone认证服务为每一个Openstack 服务都提供了身份认证的服务,而身份认证服务使用domains, projects (tenants), users, and roles的组合来实现。
创建service工程
openstack project create --domain default \
--description "Service Project" service
常规(非管理员)任务应使用非特权项目和用户。创建demo项目
openstack project create --domain default \
--description "Demo Project" demo
创建demo用户
openstack user create --domain default \
--password-prompt demo
创建user角色
openstack role create user
添加user角色到demo工程和用户
openstack role add --project demo --user demo user
验证
禁用临时身份验证令牌机制
编辑/etc/keystone/keystone-paste.ini文件,删除admin_token_auth从[pipeline:public_api], [pipeline:admin_api],[pipeline:api_v3] 部分.
取消设置的临时OS_AUTH_URL和OS_PASSWORD环境变量
unset OS_AUTH_URL OS_PASSWORD
用amdin用户请求令牌
openstack --os-auth-url http://controller: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://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue
写脚本
这些脚本可以包含有常用的openstack client选项,但是每一个脚本只支持唯一的选项值。简而言之,使用这些脚本能够让我们不需要为每一条openstack client指令都添加这么多的认证选项。
创建并且编辑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=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换ADMIN_PASS为自己设置的密码
创建并且编辑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=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换DEMO_PASS为自己设置的密码
使用脚本
使用脚本登录
. admin-openrc
请求认证令牌
openstack token issue