keystone服務監聽兩個端口:5000和35357
一、安裝和配置
1.安裝keystone組件
yum install openstack-keystone httpd mod_wsgi -y
2.在mariadb數據庫中爲keytone組件創建一個數據庫,數據庫名爲keystone,併爲keystone組件創建賬號並授予對keystone數據庫的所有操作權限。
create database keystone;
grant all privileges on keytone.* to 'keystone'@'localhost' identified by 'keystone';
grant all privileges on keystone.* to 'keystone'@'%' identified by 'keystone';
flush privileges;
3.設置keystone組件的配置文件,讓keystone組件可以訪問mariadb的keystone數據庫
vim /etc/keystone/keystone.conf
在[database]下添加:
connection = mysql+pymysql://keystone:keystone@controller1/keystone
保存退出。
4.將keystone組件所需要的表導入到mariadb的keystone數據庫中。
su -s /bin/sh -c "keystone-manage db_sync" keystone
執行完後,可以看下keystone數據庫下有幾張表,我的有44張表。
5.配置keystone組件使用fernet令牌,具體可參閱:https://blog.csdn.net/wllabs/article/details/79064094
vim /etc/keystone/keystone.conf
在[token]下添加:
provider = fernet
保存退出。
初始化fernet令牌庫,爲keystone創建令牌:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
6.初始化admin用戶(管理用戶)與密碼,3種API端點,服務實體、可用區等
keystone-manage bootstrap --bootstrap-password 123456 --bootstrap-admin-url http://controller1:35357/v3/ --bootstrap-internal-url http://controller1:5000/v3/ --bootstrap-public-url http://controller1:5000/v3/ --bootstrap-region-id RegionOne
備註:
未指定--bootstrap-username,會默認生成admin用戶,
未指定--bootstrap-project-name,會默認生成admin項目,
未指定--bootstrap-role-name,會默認生成admin角色,
未指定--bootstrap-service-name,會默認生成keystone服務實體。
另外,這條初始化命令,還默認創建了一個default域。
7.配置http服務
當沒有指定ServerName時,server會嘗試對IP地址進行反向查詢來判斷主機名。假設在ServerName中沒有指定port號,server會監聽全部port。爲了加強可靠性和可預測性,應該使用ServerName顯示的指定一個主機名和port號。
vim /etc/httpd/conf/httpd.conf
添加:
ServerName controller1:80
保存退出。
8.配置啓動http時,同時也啓動keystone
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
9.啓動http,並設置開機自啓。
systemctl enable httpd.service && systemctl start httpd.service
二、
10.配置admin環境客戶端腳本並啓動腳本
vim 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=123456 #這是初始化keystone時,設置的admin密碼。
export OS_AUTH_URL=http://controller1:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
保存退出。
source admin-openrc
或者 . admin-openrc
11.雖然初始化keystone時,已經默認創建了域、項目、用戶、角色等,但並沒有很好的演示出如何去創建它們的,下面就來演示一下:
創建服務實體keystone(這個不要去執行,因爲在初始化時已經創建):
openstack service create --name keystone --description "OpenStack Identity" identity
創建API端點(這個不要去執行,因爲在初始化時已經創建):
openstack endpoint create --region RegionOne identity public http://controller1:5000/v3
openstack endpoint create --region RegionOne identity internal http://controller1:5000/v3
openstack endpoint create --region RegionOne identity admin http://controller1:35357/v3
創建default域:(這個不要去執行,因爲在初始化時已經創建)
openstack domain create --description "Default Domain" default
在default域中創建service項目:(這個可以執行,因爲初始化時只創建了admin項目)
openstack project create --domain default --description "Service Project" service
在default域中創建demo項目:(這個可以執行)
openstack project create --domain default --description "demo Project" demo
在default域中創建demo用戶:(這個可以執行,因爲初始化時只創建了admin用戶)
openstack user create --domain default --password-prompt demo #demo用戶密碼會在命令回車執行時要求客官輸入的,我輸入的是demo
創建user角色:(這個可以執行,因爲初始化時只創建了admin角色)
openstack role create user
將user角色關聯到demo項目和demo用戶上:
openstack role add --project demo --user demo user
12.驗證創建的用戶
這一步和第10步是同樣的道理,都可以進行驗證。
使用admin用戶請求token身份令牌:
unset OS_AUTH_URL OS_PASSWORD #首先要重置第10步引入的環境變量
openstack --os-auth-url http://controller1:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin --os-identity-api-version 3 token issue
使用demo用戶請求token身份令牌:
openstack --os-auth-url http://controller1:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue
demo用戶也可以使用客戶端腳本:
vim 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=demo
export OS_AUTH_URL=http://controller1:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
保存退出。
使用. demo-openrc或者source demo-openrc進行導入這些變量。
執行openstack token issue獲取token身份令牌。
這一篇的初版結束,還有待細化和補充,感謝各位客官。下次再見。