在Ubuntu上学习OpenStack之三:控制节点上安装KeyStone
1)安装OpenStack Identity Service
v 提前约定:KeyStone使用MySQL存储相关数据,库名:keystone,账户:keystoneadmin,密码:keystoneroot,admin_token:zjd_token
v 安装认证服务包:sudo apt-get install keystone -y
v 编辑:sudo vi /etc/keystone/keystone.conf
[database]节点下原有的sqlite连接改为mysql连接:
v 删除SQLite数据库:sudo rm /var/lib/keystone/keystone.db
v 在MySQL中根据前面的约定(MySQL的root密码:mysqlroot,KeyStone库名:KeyStone,账户:keystoneadmin,密码:keystoneroot,admin_token:zjd_token)创建数据库、用户,并配置权限、设置密码:
sudo mysql -uroot -pmysqlroot -e ‘CREATE DATABASE keystone;’
sudo mysql -uroot -pmysqlroot -e ‘CREATE USER keystoneadmin;’
sudo mysql -uroot -pmysqlroot -e “GRANT ALL PRIVILEGES ON keystone.* TO ‘keystoneadmin’@’localhost’ IDENTIFIED BY ‘keystoneroot’;”
sudo mysql -uroot -pmysqlroot -e “GRANT ALL PRIVILEGES ON keystone.* TO ‘keystoneadmin’@’%’ IDENTIFIED BY ‘keystoneroot’;”
sudo mysql -uroot -pmysqlroot -e “SET PASSWORD FOR ‘keystoneadmin’@’%’ = PASSWORD(‘keystoneroot’);”
v 创建Identity Service表:sudo keystone-manage db_sync
v 此时就可以登录mysql检查表都创建出来没有:
v 编辑:sudo vi /etc/keystone/keystone.conf
修改如下两个参数:
v 重启服务:sudo service keystone restart
v 清除过期token,设置日志输出文件为/var/log/keystone/keystone-tokenflush.log:
(crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush>/var/log/keystone/keystone-tokenflush.log 2>&1'
2)配置认真服务的用户、项目、角色
v 输出环境变量:
export OS_SERVICE_TOKEN=zjd_token
export OS_SERVICE_ENDPOINT=http://10.47.182.53:35357/v2.0
v 定义admin的组间、用户、角色:(下面的实际测试发现这三个用户名必须都是admin,否则出错原因未知)
创建一个名为admin的租户:keystone tenant-create --name=admin --description=’Admin Tenant’
创建一个admin的用户:keystone user-create --name=admin --pass=adminUtest --email=zjd@163.com
创建一个admin的角色:keystone role-create --name=admin
将相关信息关联在一起:keystone user-role-add --user=admin --tenant=admin --role=admin
v 定义Service的租间/项目:
创建一个service租户:keystone tenant-create --name=service --description=”Service Tenant”
v 创建服务:keystone service-create --name=keystone --type=identity --description=”OpenStack Identity Service”
v 创建接入端点:keystone endpoint-create --service-id=$(keystone service-list | awk ‘/ identity / {print $2}’ --publicurl=http://10.47.182.53:5000/v2.0 --internalurl=http://10.47.182.53:5000/v2.0 --adminurl=http://10.47.182.53:35357/v2.0
3)最后测试一下:
v 创建一个环境变量脚本文件admin-openrc.sh,内容如下:
export OS_USERNAME=admin
export OS_PASSWORD=adminUtest
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://10.47.182.53:35357/v2.0
v 使用上面这个脚本文件:
unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
① 读取环境变量:source admin-openrc.sh
② 获取token:keystone token-get
③ 查看用户列表:keystone user-list
keystone user-role-list --user admin --tenant admin
另外,查看日志在这里:sudo cat /var/log/keystone/keystone-all.log
如果keystone安装出错,可以通过如下命令彻底删除keystone:
apt-get remove -y keystone python-keystone python-keystoneclient
sudo dpkg -l |grep keystone|awk '{print $2}'|sudo xargs dpkg -P