Ceph Object Storage 除了可以自身管理使用者訊息與驗證外,也可以透過 OpenStack Keystone 進行管理。本篇會先介紹如何在 CentOS 7 上安裝 OpenStack Keystone (Version Stein),後續會在下篇時介紹如何與 Ceph 進行串接!
前置條件
需具備一台 CentOS 7 實體機器或虛擬機器
安裝機器需具備 MariaDB
安裝 在 /etc/selinux/config
將 SELINUX 註解移除並把值更改為 disabled
來關閉 SELinux,更改完儲存並重新開機
1 2 3 4 5 6 7 8 $ setenforce 0 $ vim /etc/selinux/config ... SELINUX=disabled ... $ reboot
添加 OpenStack Keystine(Stein) rpm 並安裝
1 2 3 $ yum install http://repos.fedorapeople.org/repos/openstack/openstack-stein/rdo-release-stein-1.noarch.rpm $ yum update $ yum install openstack-keystone httpd mod_wsgi python-openstackclient gcc
在 MariaDB 建立 Keystone
資料庫並且建立 keystone
使用者賦予 任意
及 localhost
存取 keystone
資料表權限
1 2 3 4 5 $ mysql -u root -p $ CREATE DATABASE keystone; $ GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '<KEYSTONE_USER_PASSWORD>'; $ GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '<KEYSTONE_USER_PASSWORD>'; $ exit
修改 OpenStack Keystone 配置檔,在 [database]
加入資料庫配置
1 2 3 4 5 $ vim /etc/keystone/keystone.conf ... [database] connection = mysql+pymysql://keystone:<KEYSTONE_USER_PASSWORD>@<DATABASE_IP>:<DATABASE_PORT>/keystone ...
在 [token]
配置以 fernet
提供 Token 讓其他元件可以進行驗證,更改完後儲存並離開
1 2 3 4 ... [token] provider = fernet ...
根據 OpenStack Keystone 需具備的資料表來同步資料庫
1 $ su -s /bin/sh -c "keystone-manage db_sync" keystone
利用 fernet
針對 Token 進行初始化與建立驗證所需的 Token
1 2 $ keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone $ keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
建立 OpenStack Keystone 的 admin
使用者與建立預設的 domain, project 與 endpoint 等
1 2 3 4 5 $ keystone-manage bootstrap --bootstrap-password <ADMIN_PASSWORD> \ --bootstrap-admin-url http://<KEYSTONE_IP>:5000/v3/ \ --bootstrap-internal-url http://<KEYSTONE_IP>:5000/v3/ \ --bootstrap-public-url http://<KEYSTONE_IP>:5000/v3/ \ --bootstrap-region-id RegionOne
啟動 OpenStack Keystone 服務
1 2 3 $ systemctl enable httpd.service $ systemctl start httpd.service $ systemctl status httpd.service
建立 adminrc 檔案來儲存 admin 使用者的環境變數,輸入完成後儲存並且離開
1 2 3 4 5 6 7 8 9 $ vim adminrc export OS_USERNAME=admin export OS_PASSWORD=12345678 export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://172.17.1.110:5000/v3 export OS_IDENTITY_API_VERSION=3
在使用任何 OpenStack 指令時記得先將環境變數添加到系統中
結果 利用 OpenStack 指令任意呼叫服務,確認是否收到 OpenStack 回應。以下是利用查詢當前 OpenStack 已存在的服務為例,若是剛建立的環境,可以看到系統回應 Keystone 服務的資訊
1 2 3 4 5 6 $ openstack service list +----------------------------------+----------+----------+ | ID | Name | Type | +----------------------------------+----------+----------+ | 826222db3f2649d9b14be428f4873e8c | keystone | identity | +----------------------------------+----------+----------+
常見問題 OpenStack 套件沒有提供 version 指令查詢當前安裝的 Keystone 版本。因此我們需要透過 yum 當前已安裝的套件來確認當前 Keystone 安裝的版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 $ yum list | grep keystone openstack-keystone.noarch 1:15.0.0-1.el7 @openstack-stein python2-keystone.noarch 1:15.0.0-1.el7 @openstack-stein python2-keystoneauth1.noarch 3.13.1-1.el7 @openstack-stein python2-keystoneclient.noarch 1:3.19.0-1.el7 @openstack-stein python2-keystonemiddleware.noarch 6.0.0-1.el7 @openstack-stein openstack-barbican-keystone-listener.noarch openstack-keystone-doc.noarch 1:15.0.0-1.el7 openstack-stein puppet-keystone.noarch 14.4.0-1.el7 openstack-stein python-keystoneauth1-doc.noarch 3.13.1-1.el7 openstack-stein python-keystoneclient-doc.noarch 1:3.19.0-1.el7 openstack-stein python-keystonemiddleware-doc.noarch 6.0.0-1.el7 openstack-stein python2-keystone-tests.noarch 1:15.0.0-1.el7 openstack-stein python2-keystone-tests-tempest.noarch 0.2.0-1.el7 openstack-stein python2-keystone-tests-tempest-doc.noarch python2-keystoneclient-tests.noarch 1:3.19.0-1.el7 openstack-stein
若遇到系統回應 Missing value auth-url required for auth plugin password 訊息,表示當前驗證發生問題,即可能是為將使用者的環境變數加至系統中。若以 admin
使用者為例,可以利用安裝最後所建立的 adminrc
來解決此問題
在建置過程中,可以針對不同的使用者建立不同的 rc 檔來儲存使用者的參數,以方便做使用者切換
若針對本篇教學有任何疑問或有敘述錯誤的地方,歡迎在底下留言討論唷~