開發與維運

使用阿里雲Python SDK執行ESS滾動升級

環境準備

• 使用阿里雲Python SDK,您需要一個RAM賬號以及一對AccessKey ID和AccessKey Secret。 請在阿里雲控制檯中的AccessKey管理頁面上創建和查看您的AccessKey,或聯繫您的系統管理員。
• 確保您已經在阿里雲控制檯開通了運維編排 OOS

安裝阿里雲Python SDK

完成以下操作安裝Python SDK:
1.安裝SDK核心庫。推薦使用 pip 命令,安裝阿里雲SDK核心庫:

pip install aliyun-python-sdk-core
  1. 安裝雲產品的SDK。以下是安裝運維編排OOS的SDK示例:
pip install aliyun-python-sdk-oos

通過Python SDK執行滾動升級

本文以通過腳本執行滾動升級為例:
3.png

模板參數詳情請查看通過阿里雲CLI執行滾動升級文檔中模板參數說明部分。

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkoos.request.v20190601 import StartExecutionRequest
import json
# 創建AcsClient實例
client = AcsClient('<accessKeyId>', '<accessSecret>', '<regionId>')
# 創建request,並設置參數
request = StartExecutionRequest.StartExecutionRequest()
request.set_accept_format('json')
# 模板名稱根據所選升級方式替換
request.set_TemplateName("ACS-ESS-RollingUpdateByRunCommandInScalingGroup")
# 參數根據所選模板替換
parameters = {"invokeType": "invoke", 
              "commandType": "RunShellScript", 
              "OOSAssumeRole": "", 
              "exitProcess": [], 
              "invokeScript": "df -h\nifconfig", 
              "rollbackScript": "df -h\nifconfig",
              "enterProcess": [
                  "ScaleIn", 
                  "ScaleOut", 
                  "HealthCheck", 
                  "AlarmNotification", 
                  "ScheduledAction"
                ], 
              "scalingGroupId": "asg-bp1cjeuvlt1e1i1t", 
              "batchNumber": 2, 
              "batchPauseOption": "Automatic"}
# 回滾操作對應的參數
# parameters = {"invokeType": "rollback",
#               "commandType": "RunShellScript",
#               "OOSAssumeRole": "",
#               "rollbackScript": "df -h\nifconfig",
#               "scalingGroupId": "asg-bp1cjeuvlt1e1i1t",
#               "sourceExecutionId": "exec-f577d2a639f24f4e9c0a",
#               "batchNumber": 2,
#               "batchPauseOption": "Automatic"}'
request.set_Parameters(json.dumps(parameters))

# 發起API請求並顯示返回值
response = client.do_action_with_exception(request)
print(response)

Leave a Reply

Your email address will not be published. Required fields are marked *