場景介紹
把新代碼部署到ECS執行個體後,需要建立一個新的ECS鏡像并且修改指定伸縮組伸縮配置的鏡像,之後還需要把伸縮組中已存在的執行個體的鏡像一并修改。本文介紹如何通過OOS一鍵自動化實作以上流程。
解決方案
如下圖所示,伸縮配置中的源鏡像和伸縮組中執行個體的鏡像都為:aliyun_2_1903_64_20G_alibase_20190829.vhd

登入OOS控制台。如果您之前從未開通過OOS服務,請點選“立即開通”按鈕,即可一鍵開通。OOS運維編排是安全免費的服務,請放心開通。
開通後進入運維編排界面,點選自定義模闆,點選建立模闆。
點選空白模闆,點選選取。
在建立模闆頁面Yaml欄中粘貼以下模闆。
FormatVersion: OOS-2019-06-01
Description:
en: Creates an ECS image and modify scaling configuration.
zh-cn: 建立一個ECS鏡像後更新伸縮組配置鏡像。
Parameters:
instanceId:
Description:
en: The ID of ECS instance.
zh-cn: ECS執行個體ID。
Type: String
scalingConfigurationId:
Description:
en: The ID of the scaling configuration to be modified.
zh-cn: 待修改伸縮配置的ID。
Type: String
scalingGroupId:
Description:
en: The unique id of the scaling group.
zh-cn: 伸縮組ID。
Type: String
rateControl:
Description:
en: Concurrency ratio of task execution.
zh-cn: 任務執行的并發比率。
Type: Json
AssociationProperty: RateControl
OOSAssumeRole:
Description:
en: The RAM role to be assumed by OOS.
zh-cn: OOS扮演的RAM角色。
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: createImage
Action: 'ACS::ECS::CreateImage'
Description:
en: Create new image with the specified image name and instance ID.
zh-cn: 通過指定執行個體ID和鏡像名稱建立新的鏡像。
Properties:
imageName: 'm-{{ACS::ExecutionId}}'
instanceId: '{{ instanceId }}'
Outputs:
imageId:
ValueSelector: imageId
Type: String
- Name: modifyScalingConfiguration
Action: 'ACS::ExecuteAPI'
Description:
en: Modify scaling configuration.
zh-cn: 修改伸縮配置。
Properties:
Service: ESS
API: ModifyScalingConfiguration
Parameters:
ScalingConfigurationId: '{{ scalingConfigurationId }}'
ImageId: '{{ createImage.imageId }}'
- Name: getInstance
Description:
en: Views the ECS instances.
zh-cn: 擷取ECS執行個體。
Action: 'ACS::ExecuteApi'
Properties:
Service: ECS
API: DescribeInstances
Parameters:
Status: Running
Tags:
- Key: 'acs:autoscaling:scalingGroupId'
Value: '{{ scalingGroupId }}'
Outputs:
instanceIds:
Type: List
ValueSelector: 'Instances.Instance[].InstanceId'
- Name: replaceSystemDisk
Description:
en: replaces system disk.
zh-cn: 更換系統盤。
Action: 'ACS::ECS::ReplaceSystemDisk'
Properties:
instanceId: '{{ ACS::TaskLoopItem }}'
imageId: '{{ createImage.imageId }}'
Loop:
RateControl: '{{ rateControl }}'
Items: '{{ getInstance.instanceIds }}'
Outputs:
imageId:
Type: String
Value: '{{ createImage.imageId }}'
輸入模闆名稱,點選建立模闆。
在自定義模闆頁面找到剛建立的模闆,點選建立執行。
選擇自動執行,點選下一步:設定參數。
參數設定頁面需要輸入以下參數:
确認參數無誤後點選建立執行。在執行詳情頁面可以看到模闆執行的詳細過程。
執行成功後,伸縮配置鏡像已更換為新建立的鏡像。
伸縮組中執行個體的鏡像已更換為新建立的鏡像。
歡迎使用OOS
OOS客戶支援釘釘群:23330931
OOS管理控制台的連結 OOS幫助文檔的連結