OpenStack 最小化安装配置(五):KeyStone服务配置
2014-12-21 19:35
507 查看
前面的配置都算比较简单。接下来这个KeyStone服务算是比较难受的。我也配了好久,这里我设置我的Keystone的虚拟机IP地址为192.168.137.104.内部通信的IP 为192.168.1.104 首先第一步要做的事情肯定是安装服务。以下是我的安装脚本。
keystone_install.sh
在[DEFAULT]下添加一句话
[database]做如下修改
重启服务。
接着要同步数据表。
如果没有报错,同步成功。
接下来要添加用户了。
下面我编写脚本setting.sh 首先定义一些环境变量
setting.sh
上面只是创建了一些环境变量。我们需要做的是把这些所需要的用户通过keystone的命令导入进去Keystone的数据库中
下面是我的创建脚本我是抄作者的。不过意思我大概都理解了,添加了注释
简单测试一下,如果成功了。运行以下命令
![](http://img.blog.csdn.net/20141221192925125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVuZ3JqZ2M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
会得到一些用户信息,一般失败的话在脚本导入的时候就已经有错误报告了。如果正常的话
执行了source keystone.sh后结果会十分和谐。
![](http://img.blog.csdn.net/20141221193137338?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVuZ3JqZ2M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
好了,Keystone认证服务基本上已经完成了,这个服务其实要配置的文件不多。比较多的是脚本。只要有这个脚本作为模板以后可以添加更多的用户,还有租户等等。
keystone_install.sh
apt-get update apt-get install -y keystone python-keystone python-keystoneclient python-mysqldb安装好之后修改配置文件/etc/keystone/keystone.conf
在[DEFAULT]下添加一句话
admin_token = grizzly然后在
[database]做如下修改
#connection = sqlite:////var/lib/keystone/keystone.db connection = mysql://keystoneUser:keystonePass@192.168.1.102/keystone把原来的connection键值对注释掉。由于它原来要用的是sqlite数据库,我们这里采用MySQL数据库,以上面的格式对应了用户名keystoneUser密码keystonePass,还有数据库的ip地址,最后我们要访问的数据库叫做keystone这些都是之前创建数据库的时候创建的如果不喜欢可以自己修改。记得对应就可以了。
重启服务。
service keystone restart
接着要同步数据表。
keystone-manage db_sync
如果没有报错,同步成功。
接下来要添加用户了。
下面我编写脚本setting.sh 首先定义一些环境变量
setting.sh
#!/bin/bash #这个脚本用来定义一些环境变量 #作者用的是G 版,这个算是版本代号吧 export ADMIN_TOKEN="grizzly" #OpenStack keystone service system #创建系统管理员用户名,密码,邮箱,还有租户。 export KEYSTONE_SYSTEM_ADMIN_USER_NAME="admin" export KEYSTONE_SYSTEM_ADMIN_USER_PASS="adminPassword" export KEYSTONE_SYSTEM_ADMIN_USER_EMAIL="hengrj@126.com" export KEYSTONE_SYSTEM_ADMIN_TENANT_NAME="adminTenant" #这个是系统租户,Keystone,Glance,Nova这些系统用户的所属租户 export KEYSTONE_SYSTEM_SERVICE_TENANT_NAME="serviceTenant" export KEYSTONE_SYSTEM_TEST1_TENANT_NAME="aipuTenant" export KEYSTONE_SYSTEM_TEST1_MANAGER_NAME="aipumanager" export KEYSTONE_SYSTEM_TEST1_MANAGER_PASS="aipu123" export KEYSTONE_SYSTEM_TEST1_MEMBER_NAME="aipumember" export KEYSTONE_SYSTEM_TEST1_MEMBER_PASS="aipu123" export KEYSTONE_SYSTEM_TEST2_TENANT_NAME="maotaiTenant" export KEYSTONE_SYSTEM_TEST2_USER_NAME="maotai" export KEYSTONE_SYSTEM_TEST2_USER_PASS="maotai123" #系统用户的基本信息三个系统用户都是属于serviceTenant租户. export KEYSTONE_SERVER_IP=192.168.1.104 export KEYSTONE_KEYSTONE_SERVICE_NAME="keystone" export KEYSTONE_KEYSTONE_USER_NAME="keystone" export KEYSTONE_KEYSTONE_USER_PASS="Keystone_Pass" export GLANCE_SERVER_IP=192.168.1.105 export KEYSTONE_GLANCE_SERVICE_NAME="glance" export KEYSTONE_GLANCE_USER_NAME="glance" export KEYSTONE_GLANCE_USER_PASS="Glance_Pass" export NOVA_SERVER_IP=192.168.1.106 export KEYSTONE_NOVA_SERVICE_NAME="nova" export KEYSTONE_NOVA_USER_NAME="nova" export KEYSTONE_NOVA_USER_PASS="Nova_Pass"
上面只是创建了一些环境变量。我们需要做的是把这些所需要的用户通过keystone的命令导入进去Keystone的数据库中
下面是我的创建脚本我是抄作者的。不过意思我大概都理解了,添加了注释
#!/bin/bash . ./settings.sh #Synchronize database keystone-manage db_sync #Keystone system env, support this scripts export SERVICE_TOKEN=$ADMIN_TOKEN export SERVICE_ENDPOINT="http://$KEYSTONE_SERVER_IP:35357/v2.0" #Used to get id get_id() { echo `$@ | awk '/ id / { print $4 }'` } #Create Tenants echo 'create Tanants' ADMIN_TENANT_ID=$(get_id keystone tenant-create --name=$KEYSTONE_SYSTEM_ADMIN_TENANT_NAME) SERVICE_TENANT_ID=$(get_id keystone tenant-create --name=$KEYSTONE_SYSTEM_SERVICE_TENANT_NAME) #Following is for testing TEST1_TENANT_ID=$(get_id keystone tenant-create --name=$KEYSTONE_SYSTEM_TEST1_TENANT_NAME) TEST2_TENANT_ID=$(get_id keystone tenant-create --name=$KEYSTONE_SYSTEM_TEST2_TENANT_NAME) #Create Users echo 'create users' ADMIN_USER_ID=$(get_id keystone user-create --name=$KEYSTONE_SYSTEM_ADMIN_USER_NAME \ --pass=$KEYSTONE_SYSTEM_ADMIN_USER_PASS --email=$KEYSTONE_SYSTEM_ADMIN_USER_MAIL) TEST1_MANAGER_USER_ID=$(get_id keystone user-create --name=$KEYSTONE_SYSTEM_TEST1_MANAGER_NAME \ --pass=$KEYSTONE_SYSTEM_TEST1_MANAGER_PASS --email=$KEYSTONE_SYSTEM_ADMIN_USER_MAIL) TEST1_MEMBER_USER_ID=$(get_id keystone user-create --name=$KEYSTONE_SYSTEM_TEST1_MEMBER_NAME \ --pass=$KEYSTONE_SYSTEM_TEST1_MEMBER_PASS --email=$KEYSTONE_SYSTEM_ADMIN_USER_MAIL) TEST2_USER_ID=$(get_id keystone user-create --name=$KEYSTONE_SYSTEM_TEST2_USER_NAME \ --pass=$KEYSTONE_SYSTEM_TEST2_USER_PASS --email=$KEYSTONE_SYSTEM_ADMIN_USER_MAIL) #Create Roles echo 'create roles' ADMIN_ROLE_ID=$(get_id keystone role-create --name=admin) PROJECTMANAGER_ROLE_ID=$(get_id keystone role-create --name=projectmanager) MEMBER_ROLE_ID=$(get_id keystone role-create --name=Member) KEYSTONEADMIN_ROLE_ID=$(get_id keystone role-create --name=KeystoneAdmin) KEYSTONESERVICE_ROLE_ID=$(get_id keystone role-create --name=KeystoneServiceAdmin) echo "***************GRANT admin user on admin role to all tenant except serviceTenant*******" echo "ADMIN_TENANT_ID: " $ADMIN_TENANT_ID echo "ADMIN_USER_ID: " $ADMIN_USER_ID echo "ADMIN_ROLE_ID: " $ADMIN_ROLE_ID echo "Let admin user could manager all the tenant: Add adminuser with adminroles to all Tenants" keystone user-role-add --user $ADMIN_USER_ID --tenant_id $ADMIN_TENANT_ID --role $ADMIN_ROLE_ID keystone user-role-add --user $ADMIN_USER_ID --tenant_id $SERVICE_TENANT_ID --role $ADMIN_ROLE_ID keystone user-role-add --user $ADMIN_USER_ID --tenant_id $TEST1_TENANT_ID --role $ADMIN_ROLE_ID keystone user-role-add --user $ADMIN_USER_ID --tenant_id $TEST2_TENANT_ID --role $ADMIN_ROLE_ID keystone user-role-add --user $ADMIN_USER_ID --tenant_id $TEST1_TENANT_ID --role $PROJECTMANAGER_ROLE_ID keystone user-role-add --user $ADMIN_USER_ID --tenant_id $TEST2_TENANT_ID --role $PROJECTMANAGER_ROLE_ID echo "******************these things, I did not know why ****************" keystone user-role-add --user $ADMIN_USER_ID --tenant_id $ADMIN_TENANT_ID --role $KEYSTONEADMIN_ROLE_ID keystone user-role-add --user $ADMIN_USER_ID --tenant_id $ADMIN_TENANT_ID --role $KEYSTONESERVICE_ROLE_ID echo "**********************************GRANT test1 manager and member with related roles to test1tenant **********" keystone user-role-add --user $TEST1_MANAGER_USER_ID --tenant_id $TEST1_TENANT_ID --role $PROJECTMANAGER_ROLE_ID keystone user-role-add --user $TEST1_MEMBER_USER_ID --tenant_id $TEST1_TENANT_ID --role $MEMBER_ROLE_ID keystone user-role-add --user $TEST2_USER_ID --tenant_id $TEST2_TENANT_ID --role $PROJECTMANAGER_ROLE_ID echo "********************************create, nova , glance ......on serviceTenant ****************to tenant" NOVA_USER_ID=$(get_id keystone user-create --name=$KEYSTONE_NOVA_USER_NAME \ --pass=$KEYSTONE_NOVA_USER_PASS \ --tenant_id $SERVICE_TENANT_ID \ --email=hengrj@126.com) keystone user-role-add --tenant_id $SERVICE_TENANT_ID \ --user $NOVA_USER_ID \ --role $ADMIN_ROLE_ID GLANCE_USER_ID=$(get_id keystone user-create --name=$KEYSTONE_GLANCE_USER_NAME \ --pass=$KEYSTONE_GLANCE_USER_PASS \ --tenant_id $SERVICE_TENANT_ID \ --email=hengrj@126.com) keystone user-role-add --tenant_id $SERVICE_TENANT_ID \ --user $GLANCE_USER_ID \ --role $ADMIN_ROLE_ID KEYSTONE_USER_ID=$(get_id keystone user-create --name=$KEYSTONE_KEYSTONE_USER_NAME \ --pass=$KEYSTONE_KEYSTONE_USER_PASS \ --tenant_id $SERVICE_TENANT_ID \ --email=hengrj@126.com) keystone user-role-add --tenant_id $SERVICE_TENANT_ID \ --user $KEYSTONE_USER_ID \ --role $ADMIN_ROLE_ID echo "*************************************create service ******************** to tenant" NOVA_SERVICE_ID=$(get_id keystone service-create --name=$KEYSTONE_NOVA_SERVICE_NAME --type=compute --description="Nova") GLANCE_SERVICE_ID=$(get_id keystone service-create --name=$KEYSTONE_GLANCE_SERVICE_NAME --type=image --description="Keystone") KEYSTONE_SERVICE_ID=$(get_id keystone service-create --name=$KEYSTONE_KEYSTONE_SERVICE_NAME --type=identity --description="Keystone") echo "***********************************create endpoint ************************" keystone endpoint-create --region RegionOne \ --service_id=$NOVA_SERVICE_ID \ --publicurl="http://$NOVA_SERVER_IP:8774/v2/%(tenant_id)s" \ --adminurl="http://$NOVA_SERVER_IP:8774/v2/%(tenant_id)s" \ --internalurl="http://$NOVA_SERVER_IP:8774/v2/%(tenant_id)s" keystone endpoint-create --region RegionOne \ --service_id=$GLANCE_SERVICE_ID \ --publicurl=http://$GLANCE_SERVER_IP:9292/v1 \ --adminurl=http://$GLANCE_SERVER_IP:9292/v1 \ --internalurl=http://$GLANCE_SERVER_IP:9292/v1 keystone endpoint-create --region RegionOne \ --service_id=$KEYSTONE_SERVICE_ID \ --publicurl=http://$KEYSTONE_SERVER_IP:5000/v2.0 \ --adminurl=http://$KEYSTONE_SERVER_IP:35357/v2.0 \ --internalurl=http://$KEYSTONE_SERVER_IP:5000/v2.0 echo "finished"亲测可用。如果出现错误有可能是之前的服务没有做好。要根据实际情况检查下才行。
简单测试一下,如果成功了。运行以下命令
keystone user-list
会得到一些用户信息,一般失败的话在脚本导入的时候就已经有错误报告了。如果正常的话
执行了source keystone.sh后结果会十分和谐。
好了,Keystone认证服务基本上已经完成了,这个服务其实要配置的文件不多。比较多的是脚本。只要有这个脚本作为模板以后可以添加更多的用户,还有租户等等。
相关文章推荐
- OpenStack 最小化安装配置(三):MySQL服务配置
- OpenStack 最小化安装配置(六):Glance服务配置
- OpenStack 最小化安装配置(九):计算节点的服务安装
- OpenStack 最小化安装配置(七):Nova服务配置
- OpenStack 最小化安装配置(八):Horizon服务配置
- Centos7手动部署Openstack Mitaka版安装配置--(三)安装keystone认证服务
- OpenStack 最小化安装配置(四):RabbitMQ服务配置
- openstack-mitaka之镜像服务管理安装配置部署
- OpenStack 安装向导之配置identity服务
- OpenStack 最小化安装配置(二):虚拟机安装与网桥配置
- Linux服务器 CentOS 6系列最小化安装优化脚本详解02————修改history记录、定时校正服务器时间、停止IPv6网络服务、调整最大文件打开数、关闭写磁盘I/O功能、配置SSH服务
- KeyStone服务安装配置
- Openstack 实战讲解之-----------04-控制节点glance服务安装配置
- CentOS6.2下一步一步源代码安装OpenStack(三)keystone配置、运行、测试
- OpenStack 最小化安装配置(一):物理机网桥配置
- Openstack 实战讲解之-----05-控制节点Nova服务安装配置 推荐
- Centos7手动部署Openstack Mitaka版安装配置--(四)安装镜像服务glance
- openstack-mitaka之计算服务controller节点的安装配置与部署
- CentOS6.2下一步一步源代码安装OpenStack(三)keystone配置、运行、测试
- CentOS 7部署OpenStack(2)―安装keystone服务