OpenStack-Q Keystone安裝
一、Keystone概述
Keystone通常是使用者與之互動的第一個服務。一旦經過身份驗證,終端使用者就可以使用他們的身份來訪問其他OpenStack服務。同樣地,其他OpenStack服務利用Keystone驗證真假,並發現部署中其他服務的位置。Keystone還可以與一些外部使用者管理系統(如LDAP)進行整合。
使用者和服務可以通過使用由身份認證服務的service catalog來定位其他服務。顧名思義,service catalog是OpenStack部署中可用服務的集合。每個服務都可以有一個或多個端點,每個端點可以是以下三種類型之一:admin、internal或public。在生產環境中,由於安全原因,不同的端點型別可能位於不同的網路中。例如,Public API網路暴露在網際網路上,這樣客戶就可以通過公共API管理雲。Admin API網路可能僅限於管理雲基礎設施的組織中的操作人員。Internal API網路可能被限制在包含OpenStack服務的主機上。此外,OpenStack支援多個區域的可伸縮性。為簡單起見,該指南使用了所有端點型別的管理網路和預設的區域RegionOne。在身份服務中建立的區域、服務和端點組成了一個service catalog。您的部署中的每個OpenStack服務都需要一個帶有相應端點的服務條目,並存儲在身份服務中。這可以在安裝和配置身份服務之後完成。
身份服務包含以下元件: Server 集中式伺服器使用RESTful介面提供身份驗證和授權服務。 Drivers 驅動程式或服務後端被整合到集中式伺服器中。它們用於在OpenStack外部的儲存庫中訪問身份資訊,並且可能已經存在於OpenStack部署的基礎設施中(例如,SQL資料庫或LDAP伺服器)。 Modules 中介軟體模組在使用身份認證服務的OpenStack元件的地址空間中執行。這些模組攔截服務請求,提取使用者憑證,並將它們傳送到集中式伺服器以獲得授權。中介軟體模組和OpenStack元件之間的整合使用Python Web Server Gateway介面。
二、安裝Keystone元件
- 在安裝和配置身份認證服務前,必須配置好資料庫
(1)使用資料庫訪問客戶端作為root使用者連線到資料庫伺服器: (2) 建立keystone資料庫 (3)賦予keystone資料庫本地與遠端訪問的許可權
# mysql -uroot -p123456 MariaDB [(none)]> create database keystone; MariaDB [(none)]> grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456'; MariaDB [(none)]> grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';
2.安裝配置Keystone
# yum install -y openstack-keystone httpd mod_wsgi
編輯/etc/keystone/keystone.conf檔案
# vi /etc/keystone/keystone.conf
在[database]位置,配置資料庫連線
在[token]位置,配置提供的Fernet令牌
[database]
connection = mysql+pymysql://keystone:[email protected]/keystone
[token]
provider = fernet
同步Keystone資料庫
# su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化Fernet金鑰儲存庫:
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
注:引導身份認證服務 在Queens版本釋出之前,keystone需要在兩個獨立的埠上執行,以適應the Identity v2 API,該API通常在35357埠上執行一個單獨的admin-only服務。隨著v2 API的移除,keystone可以在同一個埠上執行所有介面。
# keystone-manage bootstrap --cootstrap-password 123456 \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
3.配置Apache HTTP服務
編輯/etc/httpd/conf/httpd.conf檔案,配置ServerName選項引用controller
# vi /etc/httpd/conf/httpd.conf
ServerName controller
建立連結到/usr/share/keystone/wsgi-keystone.conf
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
4.關閉selinux
# vi /etc/selinux/config
SELINUX=disabled
立即生效
# setenforce 0
5.完成安裝
# systemctl enable httpd.service;systemctl start httpd.service
6.配置admin使用者生成臨時環境變數
# export OS_USERNAME=admin
# export OS_PASSWORD=123456
# 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
7.身份服務為每個OpenStack服務提供身份驗證服務。身份驗證服務使用domains、projects、users和roles的組合。 (1)建立域
# openstack domain create --description "Domain" example
(2)建立服務專案
# openstack project create --domain default --description "Service Project" service
(3)建立平臺demo專案
# openstack project create --domain default --description "Demo project" demo
(4)建立demo使用者
# openstack user create --domain default --password-prompt demo
(5)建立使用者角色
# openstack role create user
(6)新增使用者角色到demo專案和使用者(無返回值)
# openstack role add --project demo --user demo user
注:你可以重複這個過程來建立額外的專案和使用者。
8.驗證身份認證服務 取消臨時環境變數
# unset OS_AUTH_URL OS_PASSWORD
作為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使用者設定的密碼) 作為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的密碼,它只允許常規(非管理員)訪問身份服務API。
9.建立環境指令碼 (1) 建立admin-openrc指令碼
# vi 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=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
(2)建立demo-openrc指令碼
# vi 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=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
(3)使用admin-openrc指令碼
# . admin-openrc
(4)請求身份驗證令牌:
# openstack token issue