OpenStack Liberty版 安裝配置——第二章(KeyStone)
第二章——安裝和配置認證服務KeyStone
2.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
2.2、安裝KeyStone
KeyStone服務的監聽埠是5000和35357,配置Apache HTTP服務監聽這兩個埠,為了避免埠衝突,在Ubuntu上禁止KeyStone開機自動啟動。
相關命令:
- echo "manual" >/etc/init/keystone.override
- apt-get install keystone apache2 libapache2-mod-wsgi
- memcachedpython-memcache //安裝與KeyStone相關的軟體包。
- 編輯文件 /etc/keystone/keystone.conf 並完成如下動作:
在``[DEFAULT]``部分,定義管理員token初始值。
admin_token =ADMIN_TOKEN
- 用你在前一步生成的隨機數替換ADMIN_TOKEN 。Token(令牌)是文本形式的字母-數字字元串,一種用戶生髮驗證機制,用戶在訪問受保護的服務資源時僅需提供Token,而不需要提供用戶名和密碼。
在 [database] 部分,配置資料庫訪問。
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
- 將KEYSTONE_DBPASS 替換為你為資料庫選擇的密碼。
在``[memcache]`` 部分,配置Memcached服務,11211是memcache伺服器的默認埠號。
[memcache]
servers = localhost:11211
- 在``[token]`` 部分,配置 UUID 令牌的提供者 和Memcached 的持久化驅動。
[token]
provider = uuid
driver = memcache
- 在 [revoke] 部分,配置SQL 回滾驅動。
[revoke]
driver = sql
- 為幫助排錯,在「[DEFAULT]」部分啟用詳細日誌。
[DEFAULT]
verbose = True
- 為keystone資料庫填充數據。
bash -c "keystone-manage db_sync" keystone
2.3、配置ApacheHTTP server
- 編輯``/etc/apache2/apache2.conf``文件,配置``ServerName`` 選項為控制節點。
ServerName controller
- 使用下面內容創建``/etc/apache2/sites-available/wsgi-keystone.conf`` 文件。
- Listen 5000
- Listen 35357
- <VirtualHost *:5000>
- WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
- WSGIProcessGroup keystone-public
- WSGIScriptAlias / /usr/bin/keystone-wsgi-public
- WSGIApplicationGroup %{GLOBAL}
- WSGIPassAuthorization On
- <IfVersion >= 2.4>
- ErrorLogFormat "%{cu}t %M"
- </IfVersion>
- ErrorLog /var/log/apache2/keystone.log
- CustomLog /var/log/apache2/keystone_access.log combined
- <Directory /usr/bin>
- <IfVersion >= 2.4>
- Require all granted
- </IfVersion>
- <IfVersion < 2.4>
- Order allow,deny
- Allow from all
- </IfVersion>
- </Directory>
- </VirtualHost>
- <VirtualHost *:35357>
- WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
- WSGIProcessGroup keystone-admin
- WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
- WSGIApplicationGroup %{GLOBAL}
- WSGIPassAuthorization On
- <IfVersion >= 2.4>
- ErrorLogFormat "%{cu}t %M"
- </IfVersion>
- ErrorLog /var/log/apache2/keystone.log
- CustomLog /var/log/apache2/keystone_access.log combined
- <Directory /usr/bin>
- <IfVersion >= 2.4>
- Require all granted
- </IfVersion>
- <IfVersion < 2.4>
- Order allow,deny
- Allow from all
- </IfVersion>
- </Directory>
- </VirtualHost>
- 啟用認證服務的虛擬主機。
ln -s/etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
- 重啟Apache HTTP伺服器。
service apache2 restart
- 刪除Ubuntu默認創建的SQLite資料庫。
rm -f /var/lib/keystone/keystone.db
2.4、創建服務實體和API端點
- 認證服務KeyStone提供了OpenStack服務和位置的一個目錄,OpenStack的所有服務在keystone提供的目錄中必須要有一個服務實例和幾個API端點。默認情況下,認證服務的資料庫中沒有任何的信息來支持會話校驗和目錄服務,所以我們必須使用一個臨時的校驗令牌為認證服務初始化服務實體和API端點。
- OpenStack為每個服務提供了三個API端點:admin、internal和public。默認情況下,admin API 端點允許修改用戶和租戶,而public和internal APIs不可以。在生產環境中,出於安全的原因,這三種不同的API端點位於不同的網路以服務於不同類型的用戶。
1)設置操作系統臨時環境變數:校驗令牌。
export OS_TOKEN=ADMIN_TOKEN
2)設置操作系統臨時環境變數:端點URL。
export OS_URL=http://controller:35357/v3
3)設置操作系統臨時環境變數:認證 API 版本。
export OS_IDENTITY_API_VERSION=3
4)為身份認證服務創建服務實體。
openstack service create --name keystone --description "OpenStack Identity" identity
5)OpenStack 是動態生成ID的,因此您看到的輸出會與示例中的命令行輸出不相同。
創建認證服務的API端點。
openstack endpoint create --region RegionOne identity public http://controller:5000/v2.0openstack endpoint create --region RegionOne identity internal http://controller:5000/v2.0 openstack endpoint create --region RegionOne identity admin http://controller:35357/v2.0
2.5、配置項目、用戶和角色
身份認證服務為OpenStack的所有服務提供了校驗的服務,校驗服務會聯合使用域名、項目(租戶)、用戶和角色完成校驗。
1)創建admin項目openstack project create --domain default --description "Admin Project" admin2)創建admin用戶openstack user create --domain default --password-prompt admin輸入密碼:ADMIN_PASS
3)創建admin角色
openstack role create admin
4)添加admin角色到admin項目和用戶上
openstack role add--project admin --user admin admin
5)創建service項目
openstack project create --domain default --description "Service Project" service
6)創建demo項目
openstack project create --domain default --description "Demo Project" demo
7)創建demo用戶
openstack user create --domain default --password-prompt demo
輸入密碼:DEMO_PASS
8)創建user角色
openstack role create user
9)添加 user角色到demo 項目和用戶
openstack role add --project demo --user demo user
2.6、校驗安裝
因為安全性的原因,關閉臨時認證令牌機制。編輯 /etc/keystone/keystone-paste.ini 文件,從[pipeline:public_api],[pipeline:admin_api]和[pipeline:api_v3]部分刪除admin_token_auth 。
- 重置OS_TOKEN和OS_URL環境變數
unset OS_TOKEN OS_URL
- 使用admin用戶,請求認證令牌(輸入密碼:ADMIN_PASS)
openstack --os-auth-url http://controller:35357/v3 --os-project-domain-id default --os-user-domain-id default --os-project-name admin --os-username admin --os-auth-type password token issue
- 使用demo用戶,請求認證令牌(輸入密碼:DEMO_PASS)
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-id default --os-user-domain-id default --os-project-name demo --os-username demo --os-auth-type password token issue
2.7、創建OpenStack客戶端腳本
OpenStack客戶端可以訪問認證服務,前面實驗聯合使用操作系統環境變數和命令行。為了提高效率,可以將一些操作的環境變數和命令放在一個腳本里。
- 編輯文件 admin-openrc.sh 並添加如下內容
export OS_PROJECT_DOMAIN_ID=defaultexport OS_USER_DOMAIN_ID=defaultexport OS_PROJECT_NAME=adminexport OS_TENANT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=ADMIN_PASSexport OS_AUTH_URL=http://controller:35357/v3export OS_IDENTITY_API_VERSION=3
- 編輯文件 demo-openrc.sh 並添加如下內容。
export OS_PROJECT_DOMAIN_ID=defaultexport OS_USER_DOMAIN_ID=defaultexport OS_PROJECT_NAME=demoexport OS_TENANT_NAME=demoexport OS_USERNAME=demoexport OS_PASSWORD=DEMO_PASSexport OS_AUTH_URL=http://controller:5000/v3export OS_IDENTITY_API_VERSION=3
- 載入admin-openrc.sh文件來配置身份認證服務的環境變數位置和admin項目和用戶證書
source admin-openrc.sh
- 請求認證令牌
openstack token issue
推薦閱讀:
※阿里雲數據傳輸服務低價不低質,服務再升級
※雲計算九條定律
※阿里雲Quick BI——讓人人都成為分析師
※估值75億,UCloud如何在巨頭林立的市場佔據一席之地?| 新龍榜
※2018淺析雲計算架構