有過一陣子的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