天天看點

運維編排場景系列---一鍵更新伸縮配置鏡像并替換伸縮組執行個體的系統盤

場景介紹

把新代碼部署到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幫助文檔的連結

系列文章

主題文章

阿裡雲重磅釋出雲上自動化利器——運維編排OOS

最佳實踐

玩轉運維編排服務的權限:Assume Role+Pass Role 阿裡雲運維編排新功能:一鍵批量克隆ECS

場景系列

運維編排場景系列----更新ECS鏡像 運維編排場景系列----運作遠端shell腳本 運維編排場景系列----給ECS執行個體自動打TAG 運維編排場景系列----從執行個體中拷貝檔案到OSS 運維編排場景系列----給執行個體加到SLS機器組 運維編排場景系列----檢測MFA功能狀态 運維編排場景系列----每日統計多Region執行個體的運作狀态 運維編排場景系列----如何使用jq 運維編排場景系列----分批到機器上運作指令 運維編排場景系列----更新鏡像後自動更新伸縮配置鏡像 運維編排場景系列----向Linux執行個體上傳檔案 運維編排場景系列----在ECS執行個體上運作Ansible-playbook 運維編排場景系列----下載下傳JVM堆棧到OSS 運維編排系列場景----将執行個體的固定公網IP轉換為其它新EIP 運維編排場景系列----自動定時更新臨時帶寬 運維編排場景系列----ECS執行個體系統快照下載下傳到本地 運維編排場景系列----批量開啟存儲空間通路日志 運維編排系列場景----快速生成模版shell指令 運維編排系列場景----批量釋放執行個體