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. TenantTenant即租戶,它是各個服務中的一些可以訪問的資源集合。例如,在Nova中一個tenant可以是一些機器,在Swift和Glance中一個tenant可以是一些鏡像存儲,在Quantum中一個tenant可以是一些網路資源。Users默認的總是綁定到某些tenant上。
3. RoleRole即角色,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.登錄資料庫
相關命令:
- mysql -u root -p
2.創建keystone資料庫
相關命令:
- CREATE DATABASE keystone;
3.對keystone授權
相關命令:
- GRANT ALL PRIVILEGES ON keystone.* TOkeystone@localhost
- IDENTIFIED BY KEYSTONE_DBPASS;
- GRANT ALL PRIVILEGES ON keystone.* TOkeystone@%
- IDENTIFIED BY KEYSTONE_DBPASS;
注意:KEYSTONE_DBPASS可以自定義
上面的含義:
對於keystone用戶,可以通過本地和遠程訪問
4. 退出mysql
相關命令:
- exit
5. 生成token
相關命令:
- openssl rand -hex 10
注意:我這裡是「7cc561bb3a25ea13be35」
6. 安裝keystone包
相關命令:
- apt-get install keystonepython-keystoneclient
7. 編輯keystone.conf
1)修改[DEFAULT] 部分
相關命令:
- 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
相關命令:
- su -s /bin/sh -c "keystone-managedb_sync" keystone
9. 重啟keystone
相關命令:
- service keystone restart
10.刪除 Ubuntu 包,創建的 SQLite 資料庫
相關命令:
- rm -f /var/lib/keystone/keystone.db
3.2、Keystone的使用
1.配置環境變數
1)配置OS_SERVICE_TOKEN
相關命令:
- export OS_SERVICE_TOKEN=ADMIN_TOKEN
2)配置endpoint
相關命令:
export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
注意:環境變數用戶改變後就失效
2. 創建租戶、用戶、角色
1)創建admin租戶
相關命令:
注意:關於報錯unable to establish connection to http://controller:35357/v2.0/tenant
- keystonetenant-create --name admin --description "Admin Tenant"
解決:修改 /etc/keystone/keystone.conf中,[token]部分裡面的driver
driver = keystone.token.backends.sql.Token
2)創建admin用戶
相關命令:
- keystoneuser-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS
3)創建admin角色
相關命令:
- keystonerole-create --name admin
4)添加admin角色到admin用戶和租戶
相關命令:
keystoneuser-role-add --user admin --tenant admin --role admin
3. 創建Demo租戶、用戶、角色
1)創建demo租戶
相關命令:
- keystonetenant-create --name demo --description "Demo Tenant"
2)創建demo租戶下的用戶
相關命令:
- keystoneuser-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS
4.創建service租戶
相關命令:
- 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
相關命令:
- keystone service-create --name keystone--type identity
- --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. 去除環境變變數
相關命令:
- 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)生效
相關命令:
- 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)生效
相關命令:
- source demo-openrc.sh
推薦閱讀:
※阿里巴巴大數據之路
※《數據架構》閱讀筆記(八)非重複型分析
※莘榮集團|大數據時代,我們準備好了嗎?
※pc28網站計算數據?
※第九屆中國Hadoop大數據峰會在京開幕