我們本篇就對Openstack服務元件進行一個大致的瞭解以及配置Keystone服務
前言OpenStack系統由幾個單獨安裝的關鍵服務組成。這些服務根據您的雲需求一起工作,包括計算,身份,網路,影象,塊儲存,物件儲存,遙測,編排和資料庫服務。可以單獨安裝這些專案中的任何一個,並將它們配置為獨立或作為連線的實體。
組成一個最基礎的雲計算可用平臺至少需要安裝以下元件:
keystoneglancenovaneutroncinder當然,為了更好的體驗我們還需要安裝:
dashboard另外,如果我們需要使用更多的特性還可以安裝以下元件:
1、資料庫建立每個元件服務都需要資料庫進行支撐,所以我們在安裝之前需要先建立相關資料庫。
mysql -uroot -p000000 -e "CREATE DATABASE keystone DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON *.* TO 'keystone'@'localhost' IDENTIFIED BY '000000';"mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '000000';"mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller' IDENTIFIED BY '000000';"mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'compute' IDENTIFIED BY '000000';"
-p000000 #這個是root使用者的密碼
BY '000000' #這個是keystone使用者的密碼
資料庫[keystone]建立完成
2、keystone安裝與配置2.1、服務安裝由於認真服務需要用到http服務支撐,所以我們需要安裝httpd
yum install -y openstack-keystone httpd mod_wsgi
開始安裝
安裝完成
2.2、keystone配置檔案修改該服務的配置檔案位於:
/etc/keystone/keystone.conf
資料庫連線資訊配置[database]
我們首先要修改的是:
#connection = <None>
為了避免瞎搞,建議先備份:
cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak
原內容及檔案備份
備份完成之後,我們開始修改:
keystone_db_pass=000000host_name='controller'crudini --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:${keystone_db_pass}@${host_name}/keystone
keystone_db_pass 就是第一步建立的使用者名稱為keystone的資料庫使用者的密碼host_name 就是資料庫的主機名/IP地址執行過程
最終效果
[token]配置
crudini --set /etc/keystone/keystone.conf token provider fernet
執行過程
最終實現效果
2.3、初始化資料庫(keystone)2.3.1、執行初始化命令命令如下:
su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化資料庫
從執行結果為1可以得知,此時的初始化還是出現了問題。
2.3.2、排查錯誤只要結果不等於0,那就是有問題,而找問題的方法就是看日誌啦,命令如下:
tail -f /var/log/keystone/keystone.log
錯誤資訊
資訊提示是資料庫連線錯誤,那麼我們首先去確認一下我們的配置檔案:
grep pymysql /etc/keystone/keystone.conf
缺少了主機名資訊
那麼我們重新來執行:
crudini --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:000000@controller/keystone
修改完成
改完之後,我們繼續初始化:
su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化成功
那麼現在,keystone的資料庫連線配置就算完成了。
接下來開始配置Fernet金鑰
2.4、Fernet金鑰執行下面的命令:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystonekeystone-manage credential_setup --keystone-user keystone --keystone-group keystone
執行結果
然後設定一下密碼:
keystone-manage bootstrap --bootstrap-password 000000 --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
請把000000改成你的自定義密碼
執行結果
那麼到這裡,keystone就算基本配置完成啦!
3、配置HTTP服務3.1、修改主機名命令如下:
sed -i "s#.*ServerName.*www.*#ServerName controller#g" /etc/httpd/conf/httpd.conf
執行結果及效果:
cat /etc/httpd/conf/httpd.conf | grep ServerN
修改完成
3.2、建立軟連線(快捷方式)命令如下:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
然後啟動服務:
systemctl enable httpdsystemctl start httpd
執行結果
4、服務埠驗證 netstat -tunple | grep http
三個埠開啟
一定要顯示這三個埠開啟,如果少了某個埠就需要去檢查了。
5、建立域、專案、使用者、角色5.1、宣告變數首先宣告變數:
export OS_USERNAME=adminexport OS_PASSWORD=000000export OS_PROJECT_NAME=adminexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_DOMAIN_NAME=Defaultexport OS_AUTH_URL=http://controller:5000/v3export OS_IDENTITY_API_VERSION=3
PS:請把00000改成你自定義的密碼
執行結果
5.2、配置Admin5.2.1、已有資訊查詢在建立之前,我們可以先檢視預設有哪些專案/資源
#依次查詢域、使用者、服務、專案、角色列表openstack domain listopenstack user listopenstack service listopenstack project listopenstack role list
執行結果
5.2.2、開始建立Demo命令如下:
openstack domain create --description "Admin Domain" admin
建立域:demo
建立專案:service
建立專案demo
建立使用者:demo
建立角色:user
然後把使用者(demo)新增到角色(user)中
openstack role add --project demo --user demo user
新增角色
最終效果:
#依次查詢域、使用者、服務、專案、角色列表openstack domain listopenstack user listopenstack service listopenstack project listopenstack role list
最終效果
6、驗證6.1、驗證adminunset OS_AUTH_URL OS_PASSWORD
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
6.2、驗證demounset OS_AUTH_URL OS_PASSWORDopenstack --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
7、新增變數宣告指令碼為了更好的獲取許可權,我們可以把不同的許可權相關變數寫入不同的指令碼
7.1、admin許可權echo -e "export OS_PROJECT_DOMAIN_NAME=Defaultexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=000000export OS_AUTH_URL=http://controller:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2" > /etc/keystone/admin_openrc.sh
7.2、demo許可權
openstack domain set --disable admin openstack domain delete admin
編寫指令碼
7.3、指令碼作用驗證7.3.1、管理員
7.3.2、使用者
source /etc/keystone/demo-openrc.shopenstack token issue
那麼到這裡,keystone元件就算配置完成了。
總結:每個服務或者指令執行完成之後,最後檢視執行退出碼是不是0,因為有些命令出錯了也不會報錯的每次執行完修改配置的替換語句都要去查一下是否配置成你想要的,避免出現資訊缺失的情況一定要按照順序去執行,有些命令是有先後順序的往期文章:
看下一篇:
待更新