通过API开启华为云弹性伸缩

通过API开启华为云弹性伸缩

由于业务需要,客户使用高峰期需要临时加一台服务器,以顶住线上服务器压力,该脚本由此诞生,在检测到线上用户排队数大于某个值时,直接调用该脚本即可

弹性伸缩启用脚本

#!/bin/bash

#钉钉群机器人,用于机器弹性拉起状态通知
dingtalk="https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXX"

#获取Token
username="IAM用户名"
password="IAM用户密码"
name="主账号"
#区域,这里以北京一为例
project="cn-north-1" 
tokenurl="https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens"
data='{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "name": "'$username'",
                    "password": "'$password'",
                    "domain": {
                        "name": "'$name'"
                    }
                }
            }
        },
        "scope": {
            "project": {
                "name": "'$project'"
            }
        }
    }
}'

tokenresponse=$(curl -s -X POST -i -H "Content-Type: application/json" -d "$data" $tokenurl)
x_subject_token=$(echo "$tokenresponse" | awk -F ': ' '/X-Subject-Token/ { print $2 }')
echo "$x_subject_token"

#启用弹性伸缩策略
qiyongurl="https://as.cn-north-1.myhuaweicloud.com/autoscaling-api/v1[项目ID]/scaling_policy/[伸缩策略ID]/action"
data1='{
    "action": "resume"
    }'

auth_token="$x_subject_token"

qiyongresponse=$(curl -s -X POST -i -H "Content-Type: application/json" -H "X-Auth-Token: $auth_token" -d "$data1" $qiyongurl)
status_code=$(echo "$qiyongresponse" | awk '/HTTP/ {print $2}')
#判断返回的状态码是否为204
if [ $status_code -eq 204 ]
then
    echo "弹性伸缩策略启用成功"
    curl $dingtalk \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text","text": {"content":"弹性伸缩策略启用成功"}}' 
else
    echo "弹性伸缩策略启用失败"
    curl $dingtalk \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text","text": {"content":"弹性伸缩策略启用失败"}}'
    exit 1
fi

#立即执行弹性伸缩策略
data2='{
    "action": "execute"
    }'

auth_token="$x_subject_token"

zhixingresponse=$(curl -s -X POST -i -H "Content-Type: application/json" -H "X-Auth-Token: $auth_token" -d "$data2" $qiyongurl)
status_code1=$(echo "$zhixingresponse" | awk '/HTTP/ {print $2}')
if [ $status_code1 -eq 204 ]
then
    echo "弹性算法机器资源请求成功"
    curl $dingtalk \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text","text": {"content":"弹性算法机器资源请求成功,请关注稍后弹性算法机器是否启用"}}'
else
    echo "弹性算法机器资源请求失败"
    curl $dingtalk \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text","text": {"content":"弹性算法机器资源请求失败"}}'
    exit 1
fi

#停用弹性伸缩策略(由于弹性策略设置了拉起时间,为了避免自动触发,故关闭该弹性策略)
data3='{
    "action": "pause"
    }'

auth_token="$x_subject_token"

stopresponse=$(curl -s -X POST -i -H "Content-Type: application/json" -H "X-Auth-Token: $auth_token" -d "$data3" $qiyongurl)
status_code2=$(echo "$stopresponse" | awk '/HTTP/ {print $2}')
if [ $status_code2 -eq 204 ]
then
    echo "弹性资源请求完毕后,伸缩策略停用成功"
    curl $dingtalk \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text","text": {"content":"弹性资源请求完毕后,伸缩策略停用成功"}}'
else
    echo "弹性伸缩策略停用失败"
    curl $dingtalk \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text","text": {"content":"弹性伸缩策略停用失败"}}'
    exit 1
fi

#参考文档
https://support.huaweicloud.com/api-as/as_06_0410.html
https://console.huaweicloud.com/apiexplorer/#/openapi/AS/doc?api=ResumeScalingPolicy
https://console.huaweicloud.com/iam/?region=cn-north-4&locale=zh-cn#/mine/apiCredential

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值