用户(无论是Dashboard, API Client)都需要访问Keystone获取服务列表,以及每个服务的地址(Openstack中称为Endpoint).访问服务的地址.
租户:
在Openstack中租户对应到项目(Project)。一个用户可以同时属于多个不同的项目
删除多余的删除多余的endpoint
keystone service-delete
endpoint设定:
service_id=$(keystone --token ADMIN --endpoint http://localhost:35357/v2.0/ service-create --name=glance --type=image --description="Glance Image Service" | grep '^| id' | awk '{print $4}')
有过一阵子的openstack经验之后,想要进一步了解其中的概念和实现方式,就需要自己去了解安装过程中得那些别人帮你写好的脚本。在安装keystone的时候,或许你会用到keystone_datat.sh和endpoint.sh脚本,其实就是创建user,role,tenant.service,endpoint,(当然你是用的国内比较有名的安装文档,如果用官方文档,你或许直接使用命令创建的这些,当然是很麻烦的)。今天自己尝试了一下,其实就冲这些脚本中搬出来,然后自己研究一下,比较刚毕业,也不会写脚本。代码如下,主要是针对我研究的swift提供认证和鉴权服务。
ADMIN_PASSWORD=${ADMIN_PASSWORD:-mypassword123}
export SERVICE_TOKEN="zhoubing"
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
function get_id() {
echo `$@ | awk '/ id / { print $4 }'`
}
ADMIN_TENANT=$(get_id keystone tenant-create --name=acme)
ADMIN_USER=$(get_id keystone user-create --name=alice \
--pass="$ADMIN_PASSWORD" \
--email=admin@zhoubing.com)
ADMIN_ROLE=$(get_id keystone role-create --name=admin)
keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $ADMIN_TENANT
keystone service-create --name swift --type object-store --description 'OpenStack Storage Service'
执行这个脚本之后,再输入创建endpoint的命令,就创建了针对swift的鉴权和认证服务,其中SERVICE_TOKEN要跟keystone.conf中得admin_token一致。很简单但是对于了解keystone中得概念很有帮助。不论你要为nova,galnce,还是其他服务创建鉴权服务,只需要创建tenant user 和role 还有service ,其中最重要的一步是user-role-add,把user和role和tenant关联起来,而且需要主要的如果不export环境变量,keystone-keystoneclient是不会执行的。