建立数据库
在cotroller节点上
mysql -u root -p
登录到数据库后新建一个keystone数据库,并将这个数据库的所有权限都赋给用户keystone,认证密码设置为123
mysql>CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123';
mysql>GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123';
安装配置keystone
在controller节点上
yum install openstack-keystone httpd mod_wsgi
编辑/etc/keystone/keystone.conf
在[database]部分配置数据库信息
[database]
...
connection = mysql+pymysql://keystone:123@controller/keystone
配置token的生成模式
[token]
...
provider = fernet
将keystone当前信息同步到数据库
/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
配置服务访问路径,其中123是自定义的keystone管理员密码
keystone-manage bootstrap --bootstrap-password 123 \
--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
配置apache服务
打开/etc/httpd/conf/httpd.conf
修改ServerName
ServerName controller
建立链接,如果已经存在则跳过
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
开机启动并开启apache服务
systemctl enable httpd.service
systemctl start httpd.service
将下列环境变量导入到当前bash,这些变量是为了缩短即将要使用的keystone命令,减少参数的键入,其中keystone是keystone管理员密码。
export OS_USERNAME=admin
export OS_PASSWORD=123
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
(为了操作简便可以将这些命令写入一个脚本文件并赋予可执行权限,以后将要多次使用这些环境变量。)
openstack创建域名,工程,用户和角色
这一套操作建立了域名default,工程demo,用户demo并把demo添加到角色user里。
openstack project create --domain default \
--description "Service Project" service
openstack project create --domain default \
--description "Demo Project" demo
openstack user create --domain default \
--password-prompt demo
openstack role create user
openstack role add --project demo --user demo user
结尾操作
取消临时认证token机制,编辑/etc/keystone/keystone-paste.ini,在[pipeline:public_api], [pipeline:admin_api], and [pipeline:api_v3]条目下删除admin_token_auth。
取消环境变量,改为自己键入
unset OS_AUTH_URL OS_PASSWORD
为admin用户申请一个认证token
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
输入admin密码继续。
为demo用户申请一个认证token
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
输入demo密码继续。
为了方便,分别为admin用户和demo用户建立环境变量脚本
#!/bin/bash
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
#!/bin/bash
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
运行
openstack token issue
可以看到fernet为admin用户生成的token。