阿里云CLI是基于阿里云OpenAPI建立的管理工具,您可以通過阿里云CLI調用OpenAPI來管理阿里云產品,靈活性高且易于擴展。本教程介紹如何使用阿里云CLI執行滾動升級任務。
前提條件
背景信息
滾動升級是指通過任務形式批量更新ECS實例配置。更多信息,請參見滾動升級。
操作步驟
本教程介紹如何使用阿里云CLI更新伸縮組內ECS實例的鏡像、在ECS實例中執行腳本以及為ECS實例安裝OOS軟件包。步驟如下:
步驟一:創建RAM用戶并添加權限
登錄RAM控制臺。
創建RAM用戶。
本步驟中以創建名為clitest的RAM用戶為例。更多信息,請參見創建RAM用戶。
在左側導航欄,選擇 。
單擊創建用戶。
在創建用戶頁面,指定用戶配置,然后單擊確定。
示例配置如下表所示。
配置項
示例配置
登錄名稱
example@sample.com
顯示名稱
example
訪問方式
選中使用永久 AccessKey 訪問。
自動為RAM用戶生成訪問密鑰(AccessKey),支持通過API或其他開發工具訪問阿里云。
在用戶信息頁面,單擊下載CSV文件。
說明AccessKeySecret只在創建時顯示,不提供查詢,請妥善保管。如果AccessKey泄露或丟失,則需要創建新的AccessKey。
為RAM用戶添加操作資源的權限。
在左側導航欄,選擇 。
找到已創建的RAM用戶clitest,在操作列,單擊添加權限。
在添加權限頁面,選擇執行滾動升級任務所需的權限,然后單擊確認新增授權。
示例配置如下表所示。
配置項
示例配置
資源范圍
保持默認賬號級別。
授權主體
保持默認example@sample.com。
權限策略
選擇以下系統權限:
AliyunECSFullAccess:操作ECS資源的權限,包括ECS實例等資源。
AliyunESSFullAccess:操作彈性伸縮資源的權限,包括伸縮組等資源。
AliyunOOSFullAccess:操作系統運維管理資源的權限,包括執行等資源。
AliyunOSSFullAccess:操作對象存儲資源的權限,包括bucket等資源。
步驟二:配置并驗證阿里云CLI
更多配置項的說明,請參見阿里云CLI文檔中的配置阿里云CLI部分。
在您的本地電腦中打開命令行工具。
配置阿里云CLI。
運行以下命令打開配置文件。
aliyun configure
按提示輸入AccessKeyID、AccessKeySecret等信息。
運行以下命令驗證阿里云CLI是否可用。
aliyun ecs DescribeRegions
該命令用于查詢支持的地域信息,返回地域信息表示命令執行成功,示例如下圖所示。
步驟三:通過阿里云CLI執行滾動升級任務
本步驟提供示例命令,演示更新伸縮組內ECS實例的鏡像、在ECS實例中執行腳本以及為ECS實例安裝OOS軟件包。
輸入阿里云CLI命令執行滾動升級任務。
示例代碼中涉及的OOS模板參數說明,請參見模板參數說明。
鏡像更新示例命令如下,實現將伸縮組內ECS實例的鏡像更新為Alibaba Cloud Linux 2.1903 LTS 64位。
aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup --Parameters "{ \"invokeType\": \"invoke\", \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\", \"scalingConfigurationId\": \"asc-bp1bx8mzur534edp****\", \"imageId\": \"aliyun_2_1903_x64_20G_alibase_20200529.vhd\", \"sourceImageId\": \"centos_7_8_x64_20G_alibase_20200717.vhd\", \"OOSAssumeRole\": \"\", \"enterProcess\": [ \"ScaleIn\", \"ScaleOut\", \"HealthCheck\", \"AlarmNotification\", \"ScheduledAction\" ], \"exitProcess\": [ \"ScaleIn\", \"ScaleOut\", \"HealthCheck\", \"AlarmNotification\", \"ScheduledAction\" ], \"batchNumber\": 2, \"batchPauseOption\": \"Automatic\" }"
腳本執行示例命令如下,實現在伸縮組內ECS實例中執行Shell命令df -h和ifconfig查看實例的磁盤和網絡配置信息。
aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByRunCommandInScalingGroup --Parameters "{ \"invokeType\": \"invoke\", \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\", \"commandType\": \"RunShellScript\", \"invokeScript\": \"df -h\nifconfig\", \"rollbackScript\": \"df -h\nifconfig\", \"OOSAssumeRole\": \"\", \"exitProcess\": [ \"ScaleIn\", \"ScaleOut\", \"HealthCheck\", \"AlarmNotification\", \"ScheduledAction\" ], \"enterProcess\": [ \"ScaleIn\", \"ScaleOut\", \"HealthCheck\", \"AlarmNotification\", \"ScheduledAction\" ], \"batchNumber\": 2, \"batchPauseOption\": \"Automatic\" }"
安裝OOS軟件包示例命令如下,實現為伸縮組內的ECS實例統一安裝OOS中已創建的WordPress軟件包。
aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByConfigureOOSPackage --Parameters "{ \"invokeType\": \"invoke\", \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\", \"packageName\": \"wordpress\", \"packageVersion\": \"v4\", \"action\": \"install\", \"OOSAssumeRole\": \"\", \"enterProcess\": [ \"ScaleIn\", \"ScaleOut\", \"HealthCheck\", \"AlarmNotification\", \"ScheduledAction\" ], \"exitProcess\": [ \"ScaleIn\", \"ScaleOut\", \"HealthCheck\", \"AlarmNotification\", \"ScheduledAction\" ], \"batchNumber\": 2, \"batchPauseOption\": \"Automatic\" }"
查看執行詳情。
執行滾動升級任務的CLI命令時,會自動在OOS中創建執行。您可以通過返回的執行ID查看執行的詳情,包括執行結果、輸出等信息。下面以查看腳本執行的輸出為例,介紹如何獲取執行ID并查看執行詳情。
在命令的返回信息中找到滾動升級任務的執行ID。
執行ID示例如下圖所示。
運行以下阿里云CLI命令查看執行詳情。
aliyun oos ListExecutions --ExecutionId exec-40e2e17ef7e04****
執行詳情示例如下圖所示。
執行回滾任務:滾動升級異常時的處理
如果滾動升級過程中出現異常,或者滾動升級后又需要使用歷史配置,您可以執行回滾任務為伸縮組內ECS實例恢復配置。本步驟提供示例命令,演示如何回滾已經執行的滾動升級任務。
在命令的返回信息中找到滾動升級任務的執行ID。
執行ID示例如下圖所示。
輸入阿里云CLI命令執行回滾任務。
示例代碼中涉及的OOS模板參數說明,請參見模板參數說明。
說明執行回滾任務時,OOS會根據滾動升級任務自動進行過濾待回滾的ECS實例、暫停和恢復伸縮組流程等操作,因此您可以跳過指定部分參數。
回滾鏡像更新示例命令如下,實現將ECS實例的鏡像回滾為CentOS 7.8 64位。
aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup --Parameters "{ \"invokeType\": \"rollback\", \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\", \"scalingConfigurationId\": \"asc-bp1bx8mzur534edp****\", \"sourceImageId\": \"centos_7_8_x64_20G_alibase_20200717.vhd\", \"sourceExecutionId\": \"exec-83dba59be77d430****\", \"OOSAssumeRole\": \"\", \"batchNumber\": 2, \"batchPauseOption\": \"Automatic\" }"
回滾腳本執行示例命令如下,實現在ECS實例中執行回滾用的腳本。此處仍然以Shell命令df -h和ifconfig為例,您可以按需要更換腳本。
aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByRunCommandInScalingGroup --Parameters "{ \"invokeType\": \"rollback\", \"commandType\": \"RunShellScript\", \"rollbackScript\": \"df -h\nifconfig\", \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\", \"sourceExecutionId\": \"exec-40e2e17ef7e046****\", \"OOSAssumeRole\": \"\", \"batchNumber\": 2, \"batchPauseOption\": \"Automatic\" }"
回滾安裝OOS軟件包示例命令如下,實現ECS實例統一安裝OOS中已創建的WordPress軟件包歷史版本。
aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByConfigureOOSPackage --Parameters "{ \"invokeType\": \"rollback\", \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\", \"packageVersion\": \"v3\", \"packageName\": \"wordpress\", \"sourceExecutionId\": \"exec-f4e61f2f21fe490****\", \"OOSAssumeRole\": \"\", \"batchNumber\": 2, \"batchPauseOption\": \"Automatic\" }"
查看執行詳情。
執行回滾任務的CLI命令時,同樣會自動在OOS中創建執行。您也可以通過步驟三中的方法查看執行的詳情,包括執行結果、輸出等信息。
模板參數說明
本節列出示例中使用的公共模板的參數。
表 1. ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup參數說明
參數 | 說明 |
invokeType | 任務類型。取值范圍:
|
scalingGroupId | 待執行任務的伸縮組的ID。 |
scalingConfigurationId | 伸縮組生效中的伸縮配置的ID。 |
imageId | 替換當前鏡像時使用的鏡像的ID。 |
sourceImageId | 回滾操作時使用的鏡像的ID。 |
OOSAssumeRole | 執行任務時使用的RAM角色,默認為OOSServiceRole。 |
enterProcess | 開始執行任務時暫停的伸縮組流程。 |
exitProcess | 結束任務時需要恢復的伸縮組流程。 |
batchNumber | 執行任務時,將伸縮組內ECS實例分成幾個批次,每批次至少包括一臺ECS實例。 |
batchPauseOption | 執行任務時的暫停設置。取值范圍:
|
sourceExecutionId | 執行回滾任務時,源滾動升級任務的執行ID。 |
您也可以在OOS控制臺查看更多參數說明,以華東1(杭州)地域為例,請參見ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup。
表 2. ACS-ESS-RollingUpdateByRunCommandInScalingGroup參數說明
參數 | 說明 |
invokeType | 任務類型。取值范圍:
|
scalingGroupId | 待執行任務的伸縮組的ID。 |
commandType | 待執行的腳本類型,取值RunShellScript代表Shell腳本。 |
invokeScript | 執行滾動升級任務時,在ECS實例中執行的腳本。 |
rollbackScript | 執行回滾任務時,在ECS實例中執行的腳本。 |
OOSAssumeRole | 執行任務時使用的RAM角色,默認為OOSServiceRole。 |
enterProcess | 開始執行任務時暫停的伸縮組流程。 |
exitProcess | 結束任務時需要恢復的伸縮組流程。 |
batchNumber | 執行任務時,將伸縮組內ECS實例分成幾個批次,每批次至少包括一臺ECS實例。 |
batchPauseOption | 執行任務時的暫停設置。取值范圍:
|
sourceExecutionId | 執行回滾任務時,源滾動升級任務的執行ID。 |
您也可以在OOS控制臺查看更多參數說明,以華東1(杭州)地域為例,請參見ACS-ESS-RollingUpdateByRunCommandInScalingGroup。
表 3. ACS-ESS-RollingUpdateByConfigureOOSPackage參數說明
參數 | 說明 |
invokeType | 任務類型。取值范圍:
|
scalingGroupId | 待執行任務的伸縮組的ID。 |
packageName | 軟件包的名稱。 |
packageVersion | 軟件包的版本。 |
action | 配置軟件包的方式。取值范圍:
默認值:install。 |
OOSAssumeRole | 執行任務時使用的RAM角色,默認為OOSServiceRole。 |
enterProcess | 開始執行任務時暫停的伸縮組流程。 |
exitProcess | 結束任務時需要恢復的伸縮組流程。 |
batchNumber | 執行任務時,將伸縮組內ECS實例分成幾個批次,每批次至少包括一臺ECS實例。 |
batchPauseOption | 執行任務時的暫停設置。取值范圍:
|
sourceExecutionId | 執行回滾任務時,源滾動升級任務的執行ID。 |
您也可以在OOS控制臺查看更多參數說明,以華東1(杭州)地域為例,請參見ACS-ESS-RollingUpdateByConfigureOOSPackage。