首頁>技術>

我們本篇就對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、驗證admin
unset 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、驗證demo
unset 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,因為有些命令出錯了也不會報錯的每次執行完修改配置的替換語句都要去查一下是否配置成你想要的,避免出現資訊缺失的情況一定要按照順序去執行,有些命令是有先後順序的

往期文章:

看下一篇:

待更新

18
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Linux三劍客學習之sed增刪改查知識點