踩过的坑:配置的密码非常多,密码还是统一的好
目录
KeyStone服务安装(仅控制节点)
一.创建KeyStone库并授权
1.连接数据库
mysql
如果连接不了,出现ERROR 1045 (28000)
vi /etc/my.cnf
编辑my.cnf文件
[mysqld]后面任意一行添加skip-grant-tables
用来跳过密码验证的过程
重启Mysql服务service mysql restart
mysql
再次进入重置密码
use mysql;
update user set password=password("你的新密码") where user="root";
flush privileges;
exit;
vi /etc/my.cnf
编辑my.cnf文件
把“skip-grant-tables”删除或者注释掉
重启Mysql服务service mysql restart
mysql - u root -p
进入即可
2.创建keystone数据库
CREATE DATABASE keystone;
3.授予keystone数据库权限,退出
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'
IDENTIFIED BY 'KEYSTONE_DBPASS';# KEYSTONE_DBPASS密码自己设置
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'
IDENTIFIED BY 'KEYSTONE_DBPASS';# KEYSTONE_DBPASS密码自己设置
exit;
二.安装KeyStone相关软件包
安装软件包
yum install openstack-keystone httpd mod_wsgi –y
三.修改keystone.conf
1.直接修改
由于文件内容有2700行左右,备注内容过多,实际有效配置信息只有40行左右,所有为了方便修改文件,可以先备份该文件,然后去掉注释信息
# 备份
cp /etc/keystone/keystone.conf{,.bak}
# 去掉备份文件keystone.conf.backup的空行、备注等信息覆盖掉keystone.conf文件
grep '^[a-Z\[]' /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf
vim /etc/keystone/keystone.conf
#修改一下几项
[DEFAULT] #定义初始管理令牌的值:
...
admin_token = ADMIN_TOKEN #t版的不需要修改该项
[database] #配置数据库访问:
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token] # 配置Fernet UUID令牌的提供者
...
provider = fernet #fernet为生成token字符串的一种方法
2.openstack-config修改(两种方法都可以)
下载并且安装自动配置工具(openstack专门用来自动修改配置文件的工具)
yum install openstack-utils -y
使用如下命令自动修改配置文件
openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN #ADMIN_TOKEN替换成自己密码
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone #KEYSTONE_DBPASS替换成自己的密码
openstack-config --set /etc/keystone/keystone.conf token provider fernet
四.同步数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
#切换到keystone身份执行keystone-manage db_sync命令
验证
mysql -u root -p
use keystone;
show tables;
五.初始化Fernet keys
这是新版本的OpenStack的新功能,在Train版本下,keystone不再使用简单的字符串作为临时token,而是使用下面创建的fernet的用户来运行keystone。同时,keystone也不再对管理员用户和普通用户的服务端点区分使用不同的端口5000和35357,而是只使用5000端口不再使用35357端口。
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
六.配置及启动HTTP服务
老版配置方法
echo 'ServerName controller' >> /etc/httpd/conf/httpd.conf
vi /etc/httpd/conf.d/wsgi-keystone.conf
# 写入以下内容
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
启动httpd
systemctl enable httpd.service && systemctl start httpd.service
验证端口是否存在
netstat -lntp|grep -E '80|5000|35357'
七.创建服务实体和API端点
1.创建临时身份验证令牌用来初始化的服务实体和API端点
export OS_TOKEN=ADMIN_TOKEN # 配置认证令牌,修改ADMIN_TOKEN为自己的密码
export OS_URL=http://controller:35357/v3 # 配置端点URL
export OS_IDENTITY_API_VERSION=3 # 配置认证 API 版本
验证
env|grep OS
2.创建服务实体和身份认证服务:
openstack service create \--name keystone --description "OpenStack Identity" identity
3.创建认证服务的 API 端点:
OpenStack使用三个API端点变种代表每种服务:admin,internal和public
openstack endpoint create --region RegionOne \
identity public http://controller:5000/v3
openstack endpoint create --region RegionOne \
identity internal http://controller:5000/v3
openstack endpoint create --region RegionOne \
identity admin http://controller:35357/v3
八.创建域,项目(租户),用户,角色
1.创建域
openstack domain create --description "Default Domain" default
2.创建项目
openstack project create --domain default \
--description "Admin Project" admin
3.创建角色与关联用户
创建用户
openstack user create --domain default \
--password ADMIN_PASS admin# 将ADMIN_PASS替换成自己的密码
创建角色
openstack role create admin
关联角色与用户
openstack role add --project admin --user admin admin
在admin项目上给admin用户赋予admin角色
openstack project create --domain default \
--description "Service Project" service
九.验证keystone服务
unset OS_TOKEN OS_URL #使用unset删除环境变量
env|grep OS # 查看
1.验证默认admin用户的keystone服务
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 --os-password 你的密码 token issue # 这里要改
2.查看admin的用户列表
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 --os-password 你的密码 user list # 这里要改
十.创建客户端环境变量脚本
1.创建脚本(变量)
vi 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=你的密码 #这里要改
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2.刷新变量
source admin-openrc
3.验证
env|grep OS
4.写入开机自启
vi .bashrc
添加如下内容
source admin-openrc
十一.验证keystone服务是否正常
openstack token issue
出现如下图信息就说明KeyStone配置完成!