修改openstack使用者配額

2021-09-11 23:24:23 字數 4855 閱讀 9397

這是我在工作中遇到的乙個很有趣的小問題,當時的場景是這樣的:

公司的雲產品要上線資料庫服務(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 設定配...