Openstack 安裝部署指南翻譯系列 之 Keystone服務安裝(Identity)
OpenStack系統由分開安裝的幾個關鍵服務組成。這些服務可根據其他雲需求一起工作,包括計算(Compute),身份(Identity),網絡(Networking),鏡像(Image),塊存儲(Block Storage),對象存儲(Object Storage),計量(Telemetry),編排(Orchestration)和數據庫(Database)服務。可以單獨安裝任何這些項目,並將其配置為獨立的或連接的實體。
本節介紹如何在控制器節點上安裝和配置OpenStack Identity服務(代號為keystone)。為了可擴展性,此配置部署了Fernet令牌和Apache HTTP服務器來處理請求。
1.1.1.1.1. 摘要
本指南將向您展示如何使用Red Hat Enterprise Linux 7及其衍生產品(centos 7)通過RDO存儲庫提供的軟件包安裝Keystone。
包括配置選項和示例配置文件的說明。
警告
本指南是一項正在進行的工作,經常更新。預發行包已被用於測試,一些說明可能無法與最終版本一起使用。若遇到的任何錯誤,請到社區尋求幫助。
1.1.1.1.2. 身份服務概述
OpenStack身份服務提供了一個單一的集成點,用於管理身份驗證,授權和服務目錄。
身份服務通常是用戶與之互動的第一個服務。一旦經過身份驗證,最終用戶可以使用其身份訪問其他OpenStack服務。同樣,其他OpenStack
用戶和服務可以通過使用由Identity服務管理的服務目錄定位其他服務。顧名思義,服務目錄是OpenStack部署中可用服務的集合。每個服務可以有一個或多個端點,每個端點可以是三種類型之一:管理員(admin),內部(internal)或公共(public)。在生產環境中,出於安全原因,不同的端點類型可能駐留在暴露於不同類型用戶的不同網絡上。例如,公共API網絡可能從互聯網上可見,因此客戶可以管理其雲。管理API網絡可能僅限於管理雲基礎架構的組織內的運營商。內部
身份服務包含以下組件:
服務器(Server)
集中式服務器使用RESTful接口提供認證和授權服務。
驅動程序(Drivers)
驅動程序或服務後端集成到集中式服務器。它們用於在OpenStack外部的存儲庫中訪問身份信息,並且可能已經存在於部署OpenStack的基礎架構(例如,SQL數據庫或LDAP服務器)中。
模塊(Modules)
中間件模塊在使用Identity服務的OpenStack組件的地址空間中運行。這些模塊攔截服務請求,提取用戶憑據,並將其發送到集中式服務器進行授權。中間件模塊和OpenStack組件之間的集成使用Python Web服務器網關接口。
1.1.1.1.3. 先決條件
在安裝和配置身份服務之前,必須創建一個數據庫。
1、使用數據庫訪問客戶端作為root用戶連接到數據庫服務器:
$ mysql -u root -p
2、創建keystone數據庫:
MariaDB [(none)]> CREATE DATABASE keystone;
3、授予對keystone數據庫的正確訪問權限:
MariaDB [(none)]> GREN ALL PRIVILEGES ON keystone。* TO‘keystone‘@‘localhost‘\
IDENTIFIED BY‘KEYSTONE_DBPASS‘;
MariaDB [(none)]> GREN ALL PRIVILEGES ON keystone。* TO‘keystone‘@‘%‘\
IDENTIFIED BY‘KEYSTONE_DBPASS‘;
更換KEYSTONE_DBPASS一個合適的密碼。
4、退出數據庫訪問客戶端。
1.1.1.1.4. 安裝和配置組件
註意
本指南使用Apache HTTP服務器mod_wsgi在端口5000和35357上提供身份服務請求。默認情況下,keystone服務仍會監聽這些端口。
1、運行以下命令安裝軟件包:
# yum install openstack-keystone httpd mod_wsgi
2、編輯/etc/keystone/keystone.conf文件並完成以下操作:
在該[database]部分中,配置數據庫訪問:
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
替換KEYSTONE_DBPASS為數據庫選擇的密碼。
在本[token]節中,配置Fernet令牌提供程序:
[token]
# ...
provider = fernet
3、導入身份服務數據庫:
# su -s /bin/sh -c "keystone-manage db_sync" keystone
4、初始化Fernet密鑰存儲庫:
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
5、引導身份服務:
# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
替換ADMIN_PASS為管理用戶的合適密碼。
1.1.1.1.5. 配置Apache HTTP服務器
1、編輯/etc/httpd/conf/httpd.conf文件並配置 ServerName選項以引用控制器節點:
ServerName controller
2、創建一個鏈接到該/usr/share/keystone/wsgi-keystone.conf文件:
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
1.1.1.1.6. 完成安裝
1、啟動Apache HTTP服務並將其配置為在系統啟動時啟動:
# systemctl enable httpd.service
# systemctl start httpd.service
2、配置管理帳戶
$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3
用keystone-install-configure-rdo命令中ADMIN_PASS使用的密碼替換keystone-manage bootstrap
1.1.1.1.7. 創建域(domain),項目(projects),用戶(users)和角色(roles)
身份服務為每個OpenStack服務提供身份驗證服務。認證服務使用域(domain),項目(projects),用戶(users)和角色(roles)的組合。
1、本指南使用包含您添加到環境中的每個服務的唯一用戶的服務項目。創建service 項目:
$ openstack project create --domain default \
--description "Service Project" service
2、常規(非管理員)任務應使用非特權項目和用戶。作為示例,本指南創建demo項目和用戶。
創建demo項目:
$ openstack project create --domain default \
--description "Demo Project" demo
創建demo用戶:
$ openstack user create --domain default \
--password-prompt demo
User Password:
Repeat User Password:
創建user角色:
$ openstack role create user
將user角色添加到demo項目和用戶:
$ openstack role add --project demo --user demo user
1.1.1.1.8. 驗證操作
在安裝其他服務之前驗證身份服務的運行。
註意:在控制器節點上執行這些命令。
1、出於安全考慮,禁用臨時認證令牌機制:
編輯/etc/keystone/keystone-paste.ini 文件並刪除admin_token_auth從 [pipeline:public_api],[pipeline:admin_api]和[pipeline:api_v3]段。
2、取消設置臨時OS_AUTH_URL和OS_PASSWORD 環境變量:
$ unset OS_AUTH_URL OS_PASSWORD
3、作為admin用戶,請求身份驗證令牌:
$ openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
註意:此命令使用admin用戶的密碼。
4、作為demo用戶,請求身份驗證令牌:
$ openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue
註意:此命令使用demo 用戶密碼和API端口5000,該端口僅允許定期(非管理員)訪問Identity Service API。
1.1.1.1.9. 創建OpenStack客戶端環境腳本
以前的部分使用環境變量和命令選項的組合來通過openstack客戶端與身份服務進行交互 。為了提高客戶端操作的效率,OpenStack支持簡單的客戶端環境腳本,也稱為OpenRC文件。這些腳本通常包含所有客戶端的常用選項,但也支持唯一選項。
一、創建腳本
創建客戶端環境的腳本admin和demo 項目和用戶。本指南的後面部分將引用這些腳本來為客戶端操作加載適當的憑據。
註意:客戶端環境腳本的路徑不受限制。為方便起見,可以將腳本放置在任何位置,但請確保它們可訪問並位於適合部署的安全位置,因為它們包含敏感憑據。
1、創建並編輯admin-openrc文件並添加以下內容:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替換ADMIN_PASS為admin身份服務中為用戶選擇的密碼。
2、創建並編輯demo-openrc文件並添加以下內容:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替換DEMO_PASS為demo身份服務中為用戶選擇的密碼。
二、使用腳本
要作為特定項目和用戶運行客戶端,可以在運行相關聯的客戶端環境腳本之前簡單加載它們。例如:
1、加載admin-openrc文件以使用Identity服務和admin項目的位置填充環境變量以及用戶憑據:
$ . admin-openrc
2、請求身份驗證令牌:
$ openstack token issue
本文出自 “yuweibing的技術博客” 博客,請務必保留此出處http://yuweibing.blog.51cto.com/3879355/1981176
Openstack 安裝部署指南翻譯系列 之 Keystone服務安裝(Identity)