OpenStack juno版 安裝配置——第三章(KeyStone)

第三章——安裝和配置認證服務KeyStone

基礎知識:

  • Keystone簡介

Keystone(OpenStack Identity Service)是OpenStack框架中,負責身份驗證、服務規則和服務令牌的功能, 它實現了OpenStack的Identity API。Keystone類似一個服務匯流排, 或者說是整個Openstack框架的註冊表, 其他服務通過keystone來註冊其服務的Endpoint(服務訪問的URL),任何服務之間相互的調用, 需要經過Keystone的身份驗證, 來獲得目標服務的Endpoint來找到目標服務。

  • Keystone基本概念介紹

  1. User

  User即用戶,他們代表可以通過keystone進行訪問的人或程序。Users通過認證信息(credentials,如密碼、API Keys等)進行驗證。

  2. Tenant

  Tenant即租戶,它是各個服務中的一些可以訪問的資源集合。例如,在Nova中一個tenant可以是一些機器,在Swift和Glance中一個tenant可以是一些鏡像存儲,在Quantum中一個tenant可以是一些網路資源。Users默認的總是綁定到某些tenant上。

  3. Role

  Role即角色,Roles代表一組用戶可以訪問的資源許可權,例如Nova中的虛擬機、Glance中的鏡像。Users可以被添加到任意一個全局的 或 租戶內的角色中。在全局的role中,用戶的role許可權作用於所有的租戶,即可以對所有的租戶執行role規定的許可權;在租戶內的role中,用戶僅能在當前租戶內執行role規定的許可權。

  4. Service

  Service即服務,如Nova、Glance、Swift。根據前三個概念(User,Tenant和Role)一個服務可以確認當前用戶是否具有訪問其資源的許可權。但是當一個user嘗試著訪問其租戶內的service時,他必須知道這個service是否存在以及如何訪問這個service,這裡通常使用一些不同的名稱表示不同的服務。在上文中談到的Role,實際上也是可以綁定到某個service的。例如,當swift需要一個管理員許可權的訪問進行對象創建時,對於相同的role我們並不一定也需要對nova進行管理員許可權的訪問。為了實現這個目標,我們應該創建兩個獨立的管理員role,一個綁定到swift,另一個綁定到nova,從而實現對swift進行管理員許可權訪問不會影響到Nova或其他服務。

  5. Endpoint

  Endpoint,翻譯為「端點」,我們可以理解它是一個服務暴露出來的訪問點,如果需要訪問一個服務,則必須知道他的endpoint。因此,在keystone中包含一個endpoint模板(endpoint template,在安裝keystone的時候我們可以在conf文件夾下看到這個文件),這個模板提供了所有存在的服務endpoints信息。一個endpoint template包含一個URLs列表,列表中的每個URL都對應一個服務實例的訪問地址,並且具有public、private和admin這三種許可權。public url可以被全局訪問,private url只能被區域網訪問,admin url被從常規的訪問中分離。

3.1、安裝配置KeyStone

注意:以下操作均在控制節點

1.登錄資料庫

相關命令:

  1. mysql -u root -p

2.創建keystone資料庫

相關命令:

  1. CREATE DATABASE keystone;

3.對keystone授權

相關命令:

  1. GRANT ALL PRIVILEGES ON keystone.* TOkeystone@localhost

  2. IDENTIFIED BY KEYSTONE_DBPASS;

  3. GRANT ALL PRIVILEGES ON keystone.* TOkeystone@%

  4. IDENTIFIED BY KEYSTONE_DBPASS;

注意:KEYSTONE_DBPASS可以自定義

上面的含義:

對於keystone用戶,可以通過本地和遠程訪問

4. 退出mysql

相關命令:

  1. exit

5. 生成token

相關命令:

  1. openssl rand -hex 10

注意:我這裡是「7cc561bb3a25ea13be35」

6. 安裝keystone包

相關命令:

  1. apt-get install keystonepython-keystoneclient

7. 編輯keystone.conf

1)修改[DEFAULT] 部分

相關命令:

  1. gedit /etc/keystone/keystone.conf

修改為下面:

[DEFAULT]

admin_token = ADMIN_TOKEN

注意:替換ADMIN_TOKEN,我這裡ADMIN_TOKEN = 7cc561bb3a25ea13be35

2)修改[database]部分

修改為下面:

[database]

connection =mysql://keystone:KEYSTONE_DBPASS@controller/keystone

注意:記得一定注釋掉「connection=sqlite:////var/lib/keystone/keystone.db」

3)修改[token]部分

修改為下面:

[token]

provider = keystone.token.providers.uuid.Provider

driver =keystone.token.persistence.backends.sql.Token

4)修改[revoke]部分, 配置SQL revocation driver

修改為下面:

[revoke]

driver =keystone.contrib.revoke.backends.sql.Revoke

5)可選,幫助排除定位錯誤,使日誌記錄在[DEFAULT]部分

修改為下面:

[DEFAULT]

verbose = True

8. 填充keystone

相關命令:

  1. su -s /bin/sh -c "keystone-managedb_sync" keystone

9. 重啟keystone

相關命令:

  1. service keystone restart

10.刪除 Ubuntu 包,創建的 SQLite 資料庫

相關命令:

  1. rm -f /var/lib/keystone/keystone.db

3.2Keystone的使用

1.配置環境變數

1)配置OS_SERVICE_TOKEN

相關命令:

  1. export OS_SERVICE_TOKEN=ADMIN_TOKEN

2)配置endpoint

相關命令:

  1. export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0

注意:環境變數用戶改變後就失效

2. 創建租戶、用戶、角色

1)創建admin租戶

相關命令:

  1. keystonetenant-create --name admin --description "Admin Tenant"

注意:關於報錯unable to establish connection to controller:35357/v2.0/t

解決:修改 /etc/keystone/keystone.conf中,[token]部分裡面的driver

driver = keystone.token.backends.sql.Token

2)創建admin用戶

相關命令:

  1. keystoneuser-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS

3)創建admin角色

相關命令:

  1. keystonerole-create --name admin

4)添加admin角色到admin用戶和租戶

相關命令:

keystoneuser-role-add --user admin --tenant admin --role admin

3. 創建Demo租戶、用戶、角色

1)創建demo租戶

相關命令:

  1. keystonetenant-create --name demo --description "Demo Tenant"

2)創建demo租戶下的用戶

相關命令:

  1. keystoneuser-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS

4.創建service租戶

相關命令:

  1. keystonetenant-create --name service --description "Service Tenant"

注意:通過keystone user-list、keystone tenant-list、keystone role-list命令可以查看用戶、租戶、角色

3.3、創建service entity 和 API endpoint

1. 環境變數

在配置前,首先配置好環境變數(OS_SERVICE_TOKEN)

2. 創建service entity and API endpoints

相關命令:

  1. keystone service-create --name keystone--type identity
  2. --description "OpenStack Identity"

補充:

查看服務:keystoneservice-list

刪除服務:keystoneservice-delete id

3. 創建API endpoints

相關命令:

keystone endpoint-create --service-id $(keystone service-list | awk / identity / {print $2}) --publicurl http://controller:5000/v2.0 --internalurl http://controller:5000/v2.0 --adminurl http://controller:35357/v2.0 --region regionOne

注意:service_id是前面創建service所產生的id

3.4、驗證操作

openstack的環境變數,也是dasboard登錄的用戶名和密碼

1. 去除環境變變數

相關命令:

  1. unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

2. 其它驗證操作

1)admin租戶獲取token

相關命令:

keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 token-get

2)列出用戶

相關命令:

keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 user-list

3)列出租戶

相關命令:

keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 tenant-list

4)列出角色

相關命令:

keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 role-list

3. demo租戶獲取令牌token

相關命令:

keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller:35357/v2.0 token-get

列出用戶相關命令:

keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller:35357/v2.0 user-list

注意:demo用戶無權查看user

2.5創建openstack客戶端環境變數腳本

創建環境變數腳本可以方便使用環境變數,創建admin、demo環境變數,openstack 支持OpenRC腳本文件。

1. 創建admin環境變數

1)創建並編輯 admin-openrc.sh

相關命令與內容:

vim admin-openrc.sh------------------------------內 容------------------------------export OS_TENANT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=ADMIN_PASSexport OS_AUTH_URL=http://controller:35357/v2.0------------------------------內 容------------------------------

2)生效

相關命令:

  1. source admin-openrc.sh

注意:要記住該文件放在那

2. 創建demo環境變數

1)創建並編輯demo-openrc.sh

相關命令與內容:

vim demo-openrc.sh------------------------------內 容------------------------------export OS_TENANT_NAME=demoexport OS_USERNAME=demoexport OS_PASSWORD=DEMO_PASSexport OS_AUTH_URL=http://controller:5000/v2.0------------------------------內 容------------------------------

2)生效

相關命令:

  1. source demo-openrc.sh

推薦閱讀:

阿里巴巴大數據之路
《數據架構》閱讀筆記(八)非重複型分析
莘榮集團|大數據時代,我們準備好了嗎?
pc28網站計算數據?
第九屆中國Hadoop大數據峰會在京開幕

TAG:雲計算 | 大數據 | OpenStack |