1. 程式人生 > >OpenStack-Q Keystone安裝

OpenStack-Q Keystone安裝

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. 在安裝和配置身份認證服務前,必須配置好資料庫

(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