有过一阵子的openstack经验以后,想要进一步了解其中的概念和实现方式,就须要本身去了解安装过程当中得那些别人帮你写好的脚本。在安装keystone的时候,或许你会用到keystone_datat.sh和endpoint.sh脚本,其实就是建立user,role,tenant.service,endpoint,(固然你是用的国内比较有名的安装文档,若是用官方文档,你或许直接使用命令建立的这些,固然是很麻烦的)。今天本身尝试了一下,其实就冲这些脚本中搬出来,而后本身研究一下,比较刚毕业,也不会写脚本。代码以下,主要是针对我研究的swift提供认证和鉴权服务。shell
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是不会执行的。swift