目錄:
0 實驗環境
1 概述
2 安裝和配置
2.1 先決條件
2.2 安裝和配置
2.3 http服務
2.4 完成安裝
3 創建域、項目、用戶和角色
4 驗證
5 創建腳本
0 實驗環境
openstack版本:train
實驗平台:vmware workstation 15.1
實驗虛擬機:centos 7.6,2核,4G內存
操作節點:控制節點
本文用到的帳號和密碼:
mysql數據庫管理員:root:samplepass
keystone數據庫用戶:keystone:kspass
keystone系統管理員:admin:rootpass
openstack新用戶myuser:myuser:mypass
1 概述
openstack服務組件有很多,但是至少需要按順序安裝以下服務:
- keystone-身份認證服務
- glance-鏡像服務
- placement-替換服務
- nova-計算服務
- neutron-網絡服務
除了必須的服務,建議安裝以下兩個組件:
- horizon-控制面板
- cinder-塊存儲服務
2 安裝和配置
OpenStack身份服務集成了管理身份驗證、授權和服務目錄。身份服務通常是第一個服務。一旦通過身份驗證,就可以使用其身份訪問其他OpenStack服務。身份服務還可以與一些外部用戶管理系統(如LDAP)集成。
2.1 先決條件
在安裝服務之前,必須先創建數據庫:
a)連接數據庫:
# mysql -u root -p
b)新建數據庫keystone:
MariaDB [(none)]> CREATE DATABASE keystone;
c)為keystone數據庫用戶分配權限,並設置用戶keystone的密碼為kspass:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'kspass'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'kspass';
d)退出數據庫
MariaDB [(none)]>quit;
2.2 安裝和配置
a)安裝軟件包
# yum install openstack-keystone httpd mod_wsgi
b)編輯配置文件/etc/keystone/keystone.conf
[database]節點,編輯數據庫連接字符串,使用之前創建的數據庫用戶keystone和密碼kspass:
[token]節點,編輯令牌提供程序為fernet
c)寫入keystone數據庫初始數據
# su -s /bin/sh -c "keystone-manage db_sync" keystone
這一步執行沒有返回錯誤或者成功的任何提示,所以最好通過查看數據庫信息來確認是否成功(也能確認之前的配置是否生效):
# mysql -u keystone -pkspass keystone -e 'show tables' //-p后面緊跟密碼,不能有空格
d)初始化令牌庫
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
e)引導身份認證服務,其中設置了管理員密碼為rootpass
# keystone-manage bootstrap --bootstrap-password rootpass \ --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
f)驗證,上一步創建了一個默認的域default,通過查看域的列表命令來進行檢查是否成功:
# openstack domain list
2.3 配置http服務
a)編輯/etc/httpd/conf/httpd.conf,配置服務名稱:
ServerName controller
b)創建配置文件/usr/share/keystone/wsgi-keystone.conf的符號鏈接:
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
2.4 完成安裝
a)設置服務狀態
# systemctl enable --now httpd
b)配置環境變量,其中的內容在2.2中e)步驟,通過keystone-manager命令完成了初始的設置:
$ export OS_USERNAME=admin $ export OS_PASSWORD=rootpass $ export OS_PROJECT_NAME=admin $ export OS_USER_DOMAIN_NAME=Default $ export OS_PROJECT_DOMAIN_NAME=Default $ export OS_AUTH_URL=http://controller:5000/v3 $ export OS_IDENTITY_API_VERSION=3
3 創建域、項目、用戶和角色
身份的驗證是通過域、項目、用戶和角色的組合來進行的。
a)創建一個名稱為example的新域:
# openstack domain create --description "An Example Domain" example
b)新建一個名為service的新項目,屬於example域:
# openstack project create --domain example --description "Service Project" service
c)新建一個用戶myuser,屬於example域,密碼設置為mypass:
# openstack user create --domain example --password-prompt myuser
d)新建角色myrole:
# openstack role create myrole
把myrole角色分配myuser用戶和service項目:
# openstack role add --project service --user myuser myrole
由於上一命令沒有任何提示,可以通過查看角色列表來檢查:
# openstack role assignment list --names
4 驗證
a)取消之前設置的管理員密碼的環境變量:
# unset OS_PASSWORD
b)使用admin用戶獲取token,要求輸入密碼,使用admin的密碼rootpass進行驗證:
# openstack token issue
c)使用myuser用戶獲取token,--os-username 指定用戶,--os-project-name 指定項目,--os-domain-name 指定域(上一步之所以沒有用這些參數,因為之前設置了相應的環境變量)。會要求輸入密碼,使用myuser的密碼mypass進行驗證:
# openstack --os-username myuser --os-project-name service --os-domain-name example token issue
5 創建腳本
為了提高客戶端操作的效率,OpenStack支持簡單的客戶端環境腳本(也稱為OpenRC文件),這些腳本通常包含所有客戶端的通用選項。
a)創建admin用戶的腳本文件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=rootpass export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
b)創建myuser用戶的腳本文件myuser-openrc:
export OS_PROJECT_DOMAIN_NAME=example export OS_USER_DOMAIN_NAME=example export OS_PROJECT_NAME=service export OS_USERNAME=myuser export OS_PASSWORD=mypass export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
c)使用腳本來進行驗證操作:
# . admin-openrc //注意:命令是一個點,空格,文件名。執行文件里的命令,也就是設置環境變量。
# openstack token issue
# . myuser-openrc //運行myuser的文件,驗證myuser的配置
# openstack token issue