這是我在工作中遇到的乙個很有趣的小問題,當時的場景是這樣的:
公司的雲產品要上線資料庫服務(trove),因為每建立資料庫例項都要占用乙個虛擬機器及相關資源的配額,尤其是使用者的安全組預設配額(10個)就不夠用了,所以公司領導給了我乙個要求,將原來的預設配額改為***,將已經調整過配額使用者的配額加***
難點分析
我的思路
實踐出真知
其他修改預設配額好辦,直接nova quota-class-update --*** *** default就行了,如果命令列不能更改的直接寫在配置檔案裡。但是已經調整過的使用者怎麼修改呢?這是個問題。
對於quota而言,當前雲平台存在兩種使用者型別:
import ***
兩種使用者的區別:
小結更改預設配額命令列更改就行了(除了安全組需要更改neutron配置檔案),那麼,修改配額的指令碼只需要作用在第一類使用者。
指令碼應該做的:能夠篩選出第一類使用者,將這類使用者已經修改過的配額做加法,對未被修改過的配額修改為固定值,這個值等於預設值。
寫了個指令碼用來處理上面的第一類使用者:
指令碼的邏輯為:
指令碼傳入的是乙個projectid
從資料庫拿出這個租戶已經被修改了的資源配額
對這些資源配額進行判斷,如果以前調節為-1則不作改動,如果不是-1且有數值則做加法,如果沒有配額則設定為期望的數值。
注:指令碼執行完後,所有以前被手動更改過配額的使用者,未被更改過的其他資源也會被設定為乙個引數,也就是說某個租戶但凡是被手動改過一次配額,那麼指令碼執行完後這個租戶的所有資源配額會被標記為"已被手動更改"。
#!/bin/bash
export os_project_domain_name=default
#export os_user_domain_name=default
export os_project_name=admin
export os_username=admin
export os_token=*********************x
export os_auth_type=v3token
export os_auth_url=
export os_identity_api_version=3
project_id=$1
before_data_ins=` mysql -hlb.2.stage.polex.io -u***x -p***x nova -t -e "select hard_limit from quotas where project_id='$1' and resource='instances' \g" |grep hard|awk ''`
before_data_ram=` mysql -hlb.2.stage.polex.io -u***x -p***x nova -t -e "select hard_limit from quotas where project_id='$1' and resource='ram' \g" |grep hard|awk ''`
before_data_cpu=` mysql -hlb.2.stage.polex.io -u***x -p***x nova -t -e "select hard_limit from quotas where project_id='$1' and resource='cores' \g" |grep hard|awk ''`
before_data_sec=` mysql -hlb.2.stage.polex.io -u***x -p***x neutron -t -e "select * from quotas where tenant_id='$1' and resource='security_group' \g" |grep limit|awk ''`
before_data_vol=` mysql -hlb.2.stage.polex.io -u***x -p***x cinder -t -e "select hard_limit from quotas where project_id='$1' and resource='volumes' \g" |grep hard|awk ''`
before_data_gig=` mysql -hlb.2.stage.polex.io -u***x -p***x cinder -t -e "select hard_limit from quotas where project_id='$1' and resource='gigabytes' \g" |grep hard|awk ''`
#判斷是否為第二類使用者
if [ $before_data_ins ]||[ $before_data_cpu ]||[ $before_data_sec ]||[ $before_data_vol ]||[ $before_data_gig ];then
#判斷配額是否存在,若等於-1,不改變,若存在做加法,若不存在設定為固定值。
if [ "$before_data_ins"x == "-1"x ];then
except_data_ins=-1
elif [ $before_data_ins ]&&[ $before_data_ins != -1 ];then
except_data_ins=$[$+40]
else
except_data_ins=50
fiif [ "$before_data_ram"x == "-1"x ];then
except_data_ram=-1
elif [ $before_data_ram ]&&[ $before_data_ram != -1 ];then
except_data_ram=$[$+51200]
else
except_data_ram=102400
fiif [ "$before_data_cpu"x == "-1"x ];then
before_data_cpu=-1
elif [ $before_data_cpu ]&&[ $before_data_cpu != -1 ];then
except_data_cpu=$[$+80]
else
except_data_cpu=100
fiif [ "$before_data_sec"x == "-1"x ];then
before_data_sec=-1
elif [ $before_data_sec ]&&[ $before_data_sec != -1 ];then
except_data_sec=$[$+40]
else
except_data_sec=50
fiif [ "$before_data_vol"x == "-1"x ];then
before_data_vol=-1
elif [ $before_data_vol ]&&[ $before_data_vol != -1 ];then
except_data_vol=$[$+40]
else
except_data_vol=50
fiif [ "$before_data_gig"x == "-1"x ];then
before_data_gig=-1
elif [ $before_data_gig ]&&[ $before_data_gig != -1 ];then
except_data_gig=$[$+1000]
else
except_data_gig=2000
fi#echo $before_data_ins $except_data_ins
#echo $before_data_ram $except_data_ram
#echo $before_data_cpu $except_data_cpu
#echo $before_data_sec $except_data_sec
#echo $before_data_vol $before_data_vol
#echo $before_data_gig $except_data_gig
#更改配額
openstack quota set --instances $except_data_ins $project_id
openstack quota set --ram $except_data_ram $project_id
openstack quota set --cores $except_data_cpu $project_id
openstack quota set --secgroups $except_data_sec $project_id
openstack quota set --volumes $except_data_vol $project_id
openstack quota set --gigabytes $except_data_gig $project_id
fiif [ $? = 0 ];then
echo $1 : ok!
fi
修改預設配額方法:
#instances,ram,cpu
nova quota-class-update --*** *** default
#volumes,gigabytes
cinder quota-class-update --*** *** default
#secgroups
無法用命令列更改
可通過該配置檔案:api節點,
neutron.conf
[quotas]
quota_security_group = x
posted @
2017-11-14 19:35
mauricewei 閱讀(
...)
編輯收藏
openstack使用者安全加固
從newton版本開始,identity服務啟用安全加固,用於滿足支付行業和資料行業安全標。預設情況下,所有功能均禁用,大多數功能僅適用於driver為sql的認證方式。修改方法 修改keystone.conf的 keystone.conf部分 幾次錯誤重試鎖定使用者 security compli...
關於集群kube dns配額的修改
問題描述 集群搭建好之後,kube dns的pod狀態以及describe進入到pod中檢視的情況如圖 根據describe的描述可以知道kube dns是不健康的,導致這類問題的原因在於limit和request,也就是配額的限制。解決這類問題只要將kube dns的deployment的yaml...
給批量使用者設磁碟配額
1 先給乙個已存在的使用者建好配額 a 修改 etc fstab檔案 如 label ext3 defaults,usrquota,grquota 1 1 b 重新啟動系統使設定生效 reboot c 建立配額檔案 quotacheck cmug 檢視已建立的配額檔案 ls aquota.d 設定配...