一柠贤、安裝和配置KeyStone
1. 為KeyStone配置數(shù)據(jù)庫
- 使用數(shù)據(jù)庫客戶端,以root用戶連接到數(shù)據(jù)庫中:
mysql -u root -p
- 創(chuàng)建KeyStone數(shù)據(jù)庫:
CREATE DATABASE keystone;
- 為KeyStone用戶授權(quán):
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
2. 安裝KeyStone
- KeyStone服務(wù)的監(jiān)聽端口是5000和35357,配置Apache HTTP服務(wù)監(jiān)聽這兩個(gè)端口申屹,為了避免端口沖突丛晌,在Ubuntu上禁止KeyStone開機(jī)自啟動:
echo "manual" > /etc/init/keystone.override
- 安裝與Keystone相關(guān)的軟件包:
apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache
3. 修改KeyStone的配置文件keystone.conf
修改/etc/keystone/keystone.conf
小技巧:將原文件備份镜廉,使用命令cat backup_file | grep -v '^#' > new_file
可以生成新文件签餐,并去掉注釋寓涨,即cat /etc/keystone/keystone.conf.bak | grep -v '^#' > /etc/keystone/keystone.conf
- 隨機(jī)生成一個(gè)16進(jìn)制的token:
openssl rand -hex 10
- 修改[default]部分,配置初始的令牌管理:
admin_token = ADMIN_TOKEN
ADMIN_TOKEN是剛才所生成的隨機(jī)值 - 修改[database]部分贱田,配置數(shù)據(jù)庫的連接:
connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone
- 修改[memcache]缅茉,配置Memcache 服務(wù):
servers = localhost:11211
11211是memecahced服務(wù)器的默認(rèn)端口號 - 修改[token]部分,配置UUID令牌的提供者和memcached的持久化驅(qū)動:
provider = keystone.token.providers.uuid.Provider
driver = keystone.token.persistence.backends.memcache.Token
- 修改[revoke] 部分, 配置SQL的撤回驅(qū)動:
driver = keystone.contrib.revoke.backends.sql.Revoke
可選:為了方便做問題診斷男摧,在[DEFAULT]部分,配置詳細(xì)的日志輸出:
verbose = True
- 為keystone數(shù)據(jù)庫填充數(shù)據(jù):
su -s /bin/sh -c "keystone-manage db_sync" keystone
4. 配置 Apache HTTP server
- 編輯/etc/apache2/apache2.conf译打,配置ServerName選項(xiàng)為控制節(jié)點(diǎn)hostname:
ServerName controller
- 創(chuàng)建/etc/apache2/sites-available/wsgi-keystone.conf文件耗拓,添加如下內(nèi)容:
Listen 5000 Listen 35357 <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /var/www/cgi-bin/keystone/main WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> LogLevel info ErrorLog /var/log/apache2/keystone-error.log CustomLog /var/log/apache2/keystone-access.log combined </VirtualHost> <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /var/www/cgi-bin/keystone/admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> LogLevel info ErrorLog /var/log/apache2/keystone-error.log CustomLog /var/log/apache2/keystone-access.log combined </VirtualHost>
- 啟用身份認(rèn)證服務(wù)的虛擬主機(jī):
ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
- 為WSGI組件創(chuàng)建目錄結(jié)構(gòu):
mkdir -p /var/www/cgi-bin/keystone
- 拷貝WSGI組件到當(dāng)前創(chuàng)建好的目錄/var/www/cgi-bin/keystone下:
curl http://git.openstack.org/cgit/openstack/keystone/plain/httpd/keystone.py?h=stable/kilo | tee /var/www/cgi-bin/keystone/main /var/www/cgi-bin/keystone/admin
- 設(shè)置目錄和文件的權(quán)限:
chown -R keystone:keystone /var/www/cgi-bin/keystone
chmod 755 /var/www/cgi-bin/keystone/*
- 重啟apache http server:
service apache2 restart
- 刪除ubuntu默認(rèn)創(chuàng)建的SQLite數(shù)據(jù)庫:
rm -f /var/lib/keystone/keystone.sqlite
二、配置服務(wù)實(shí)體與API端點(diǎn)
1. 配置認(rèn)證服務(wù)的服務(wù)實(shí)體
- 設(shè)置操作系統(tǒng)臨時(shí)環(huán)境變量:校驗(yàn)令牌:
export OS_TOKEN=ADMIN_TOKEN
- 設(shè)置操作系統(tǒng)臨時(shí)環(huán)境變量:端點(diǎn)URL:
export OS_URL=http://controller:35357/v2.0
- 為認(rèn)證服務(wù)創(chuàng)建服務(wù)實(shí)體:
openstack service create --name keystone --description "OpenStack Identity" identity
- 配置認(rèn)證服務(wù)的API端點(diǎn):
openstack endpoint create --publicurl http://controller:5000/v2.0 --internalurl http://controller:5000/v2.0 --adminurl http://controller:35357/v2.0 --region RegionOne identity
三奏司、創(chuàng)建項(xiàng)目(租戶)乔询、用戶和角色
- 創(chuàng)建admin租戶:
openstack project create --description "Admin Project" admin
- 創(chuàng)建admin用戶:
openstack user create --password-prompt admin
- 創(chuàng)建admin角色:
openstack role create admin
- 添加admin角色到admin租戶和用戶:
openstack role add --project admin --user admin admin
四、創(chuàng)建服務(wù)項(xiàng)目
- 位其他的OpenStack服務(wù)創(chuàng)建服務(wù)項(xiàng)目:
openstack project create --description "Service Project" service
五韵洋、創(chuàng)建普通項(xiàng)目和用戶
- 創(chuàng)建demo項(xiàng)目:
openstack project create --description "Demo Project" demo
- 創(chuàng)建demo用戶:
openstack user create --password-prompt demo
- 創(chuàng)建demo角色:
openstack role create user
- 添加user角色到demo租戶和用戶:
openstack role add --project demo --user demo user
六竿刁、校驗(yàn)安裝
1. 校驗(yàn)安裝前的準(zhǔn)備
- 基于安全的原因,先臨時(shí)禁止校驗(yàn)令牌的機(jī)制食拜。編輯/etc/keystone/keystone-paste.ini:
移除admin_token_auth從[pipeline:public_api], [pipeline:admin_api], [pipeline:api_v3]部分 - 取消設(shè)置的操作系統(tǒng)環(huán)境變量:
unset OS_TOKEN OS_URL
2. 使用admin用戶校驗(yàn)安裝
- 以admin用戶负甸,從2.0版本的認(rèn)證API申請一個(gè)校驗(yàn)令牌:
openstack --os-auth-url http://controller:35357 --os-project-name admin --os-username admin --os-auth-type password token issue
3.0版本的認(rèn)證API支持域名,以admin用戶申請一個(gè)校驗(yàn)令牌:
openstack --os-auth-url http://controller:35357 --os-project-domain-id default --os-user-domain-id default --os-project-name admin --os-username admin --os-auth-type password token issue
- 以admin用戶打月,校驗(yàn)admin用戶是否有權(quán)限云查看認(rèn)證服務(wù)中所包含的項(xiàng)目:
openstack --os-auth-url http://controller:35357 --os-project-name admin --os-username admin --os-auth-type password project list
- 以admin用戶奏篙,查看認(rèn)證服務(wù)中的用戶是否創(chuàng)建成功:
openstack --os-auth-url http://controller:35357 --os-project-name admin --os-username admin --os-auth-type password user list
- 以admin用戶迫淹,查看認(rèn)證服務(wù)中的角色是否創(chuàng)建成功:
openstack --os-auth-url http://controller:35357 --os-project-name admin --os-username admin --os-auth-type password role list
3. 使用demo用戶校驗(yàn)安裝
- 以demo用戶,從v3版本的認(rèn)證API中申請校驗(yàn)令牌:
openstack --os-auth-url http://controller:5000 --os-project-domain-id default --os-user-domain-id default --os-project-name demo --os-username demo --os-auth-type password token issue
- 以demo用戶充易,嘗試能否執(zhí)行只有管理用戶才能執(zhí)行的查看用戶的操作:
openstack --os-auth-url http://controller:5000 --os-project-domain-id default --os-user-domain-id default --os-project-name demo --os-username demo --os-auth-type password user list
七盹靴、創(chuàng)建OpenStack客戶端腳本
1. 創(chuàng)建admin用戶的腳本
創(chuàng)建和編輯文件admin-openrc.sh瑞妇,加入如下內(nèi)容:
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
2. 創(chuàng)建demo用戶的腳本
創(chuàng)建和編輯文件demo-openrc.sh辕狰,加入如下內(nèi)容:
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
3. 測試腳本
- 加載腳本:
source admin-openrc.sh
- 測試腳本:
openstack token issue