有过一阵子的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_TENANTkeystone 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是不会执行的。