二、認證服務 keystone部署
python
控制節點:mysql
2.一、安裝和配置服務sql
2.1.一、建庫建用戶數據庫
mysql -u root -papache
CREATE DATABASE keystone;api
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'P@ssw0rd';安全
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'P@ssw0rd';dom
flush privileges;ide
2.1.二、安裝相關包網站
yum install openstack-keystone httpd mod_wsgi -y
以下圖所示安裝缺失的rpm包,不知道是否是離線源沒下載好,附帶網站連接:https://pkgs.org/
在網站上直接搜索缺失的rpm包就能夠了,確實2個包,可是其中一個包有依賴包,因此最終下載安裝3個包:
python-jinja2-2.7.2-4.el7.noarch.rpm
python-markupsafe-0.11-10.el7.x86_64.rpm
python-zope-interface-4.0.5-4.el7.x86_64.rpm
而後安裝成功
2.1.三、生成一個隨機值在初始的配置中做爲管理員的令牌:
[root@controller ~]# openssl rand -hex 10
38cffecbd035b2589040
2.1.四、編輯/etc/keystone/keystone.conf
[DEFAULT]
admin_token = 38cffecbd035b2589040
#這裏的做用主要是先手動指定admin_token,爲了部署keystone,由於keystone沒部署,認證環節還不能工做,等keystone部署好,會把手動指定admin_token認證方式去掉
[database]
connection = mysql+pymysql://keystone:P@ssw0rd@controller/keystone
[token]
provider = fernet
2.1.五、同步修改到數據庫 ---多是虛擬機比較卡,這一步等了兩分鐘
su -s /bin/sh -c "keystone-manage db_sync" keystone
2.1.六、初始化fernet keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
2.1.七、配置apache服務 ---這裏的名稱就是主機名
vi /etc/httpd/conf/httpd.conf
ServerName controller
vi /etc/httpd/conf.d/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
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</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
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
---不知道是否是粘貼複製的緣由,從這裏複製的失敗了,從官方文檔複製的內容就成功啓動了httpd
2.1.八、啓動服務:
# systemctl enable httpd
# systemctl start httpd
2.二、建立服務實體和API端點
2.2.一、實現配置管理員環境變量,用於獲取後面建立的權限
export OS_TOKEN=38cffecbd035b2589040
#要與前面的/etc/keystone/keystone.conf中的admin_token相同
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
2.2.二、基於上一步給的權限,建立認證服務實體(目錄服務)
openstack service create --name keystone --description "OpenStack Identity" identity
#如遇到報500錯誤,ArgsAlreadyParsedError: arguments already parsed: cannot register CLI option,可把--description "OpenStack Identity"去掉
2.2.三、基於上一步創建的服務實體,建立訪問該實體的三個api端點
openstack endpoint create --region RegionOne identity public http://controller:5000/v3
openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
openstack endpoint create --region RegionOne identity admin http://controller:35357/v3
2.三、建立域,租戶,用戶,角色
2.3.一、建立域``default``:
openstack domain create --description "Default Domain" default
2.3.二、爲進行管理操做,建立管理的項目、用戶和角色
建立 admin 項目:
openstack project create --domain default --description "Admin Project" admin
建立 admin 用戶: --默認密碼:P@sswrd
openstack user create --domain default --password-prompt admin
建立 admin 角色:
openstack role create admin
添加``admin`` 角色到 admin 項目和用戶上:
openstack role add --project admin --user admin admin
2.3.三、本指南使用一個你添加到你的環境中每一個服務包含獨有用戶的service 項目。建立``service``項目:
爲後續的服務建立統一租戶service
解釋:後面每搭建一個新的服務都須要在keystone中執行四種操做:1.建租戶 2.建用戶 3.建角色 4.作關聯
後面全部的服務公用一個租戶service,都是管理員角色admin,因此實際上後續的服務安裝關於keysotne的操做只剩2,4
openstack project create --domain default --description "Service Project" service
2.3.四、常規(非管理)任務應該使用無特權的項目和用戶,建立 demo 項目和用戶
普通用戶:demo
openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password-prompt demo
默認密碼:P@ssw0rd
openstack role create user
openstack role add --project demo --user demo user
2.四、驗證操做:
2.4.一、由於安全性的緣由,關閉臨時認證令牌機制:
編輯 /etc/keystone/keystone-paste.ini 文件,從``[pipeline:public_api]``,[pipeline:admin_api]``和``[pipeline:api_v3]``部分刪除``admin_token_auth 。
下圖三個紅色方框內的admin_token_auth所有刪除
下圖爲刪除後的配置
2.4.二、重置``OS_TOKEN``和``OS_URL`` 環境變量:
# unset OS_TOKEN OS_URL
2.4.三、做爲 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``用戶的密碼。我這裏全程都是:P@ssw0rd
2.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
密碼全程都是:P@ssw0rd
註解:這個命令使用``demo`` 用戶的密碼和API端口5000,這樣只會容許對身份認證服務API的常規(非管理)訪問。
2.五、建立 OpenStack 客戶端環境腳本
2.5.一、編輯文件 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=P@ssw0rd
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2.5.二、編輯文件 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=P@ssw0rd
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2.5.三、使用腳本
使用特定租戶和用戶運行客戶端,你能夠在運行以前簡單地加載相關客戶端腳本。例如:
加載``admin-openrc``文件來身份認證服務的環境變量位置和``admin``項目和用戶證書:
# . admin-openrc
請求認證令牌:
# openstack token issue