天天看點

基于OOS實作包年包月執行個體到期後提前一天轉按量

OOS簡介

Operation Orchestration Service,簡稱OOS,是全面、免費的雲上自動化運維平台,提供運維任務的管理和執行。典型使用場景包括:事件驅動運維,批量操作運維,定時運維任務,跨地域運維等,OOS為重要運維場景提供審批,通知等功能。OOS幫您實作标準化運維任務,進而實踐運維即代碼(Operations as Code)的先進理念。關于OOS更詳細的介紹請參見

什麼是運維編排服務

場景介紹

當賬戶下有一批自動續費的ECS執行個體,在執行個體到期當天如果不能及時釋放執行個體或轉成按量,執行個體會自動續費,産生一批額外的費用。使用OOS可以實作把到期執行個體提前一天轉成按量付費,以降低成本,節省費用。

建立模闆

1.登陸

OOS控制台 ,找到我的模闆,點選建立模闆。
基于OOS實作包年包月執行個體到期後提前一天轉按量
2.選擇空白模版。
基于OOS實作包年包月執行個體到期後提前一天轉按量
3.複制下文提供的模闆到YAML欄中,輸入模闆名稱,點選建立模闆。
基于OOS實作包年包月執行個體到期後提前一天轉按量
模闆内容:

Description: Modify prepaid instance charge type.
FormatVersion: OOS-2019-06-01
Parameters:
  regionId:
    Type: String
    Description:
      en: The id of region.
      zh-cn: 地域ID。
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  targets:
    Type: Json
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: 'ALIYUN::ECS::Instance'
      RegionId: regionId
  rateControl:
    Description:
      en: Concurrency ratio of task execution.
      zh-cn: 任務執行的并發比率。
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 10
  OOSAssumeRole:
    Description:
      en: The RAM role to be assumed by OOS.
      zh-cn: OOS扮演的RAM角色。
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: getInstance
    Description:
      en: Views the ECS instances.
      zh-cn: 擷取ECS執行個體。
    Action: 'ACS::SelectTargets'
    Properties:
      ResourceType: 'ALIYUN::ECS::Instance'
      RegionId: '{{ regionId }}'
      Filters:
        - '{{ targets }}'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: 'Instances.Instance[].InstanceId'
  - Name: describeInstances
    Action: 'ACS::ExecuteAPI'
    Description:
      zh-cn: Get Instance by expired time.
      en: 根據到期時間過濾執行個體。
    Properties:
      Service: ECS
      API: DescribeInstances
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceIds: '{{ getInstance.instanceIds }}'
        InstanceChargeType: PrePaid
        Filter3Key: ExpiredStartTime
        Filter4Key: ExpiredEndTime
        Filter3Value:
          'Fn::FormatUTCTime':
            - 'Fn::AddHour':
                - '{{ACS::CurrentUTCTime}}'
                - 24
            - '%Y-%m-%dT00:00Z'
        Filter4Value:
          'Fn::FormatUTCTime':
            - 'Fn::AddHour':
                - '{{ACS::CurrentUTCTime}}'
                - 48
            - '%Y-%m-%dT00:00Z'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: 'Instances.Instance[].InstanceId'
  - Name: modifyInstanceChargeType
    Description:
      en: Modify instance charge type.
      zh-cn: 修改執行個體計費方式。
    Action: 'ACS::ECS::ModifyInstanceChargeType'
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ ACS::TaskLoopItem }}'
      instanceChargeType: PostPaid
    Loop:
      RateControl: '{{ rateControl }}'
      Items: '{{ describeInstances.instanceIds }}'
Outputs:
  InstanceIds:
    Type: List
    Value: '{{ describeInstances.instanceIds }}'           

定時執行模版

1.找到定時運維,點選建立,選擇周期性重複執行,設定定時執行的規則。

截圖所示規則:截止規則結束時間,每天0點0分定時執行制指定模闆。

基于OOS實作包年包月執行個體到期後提前一天轉按量

2.模闆選擇,選擇上文建立的模闆。

基于OOS實作包年包月執行個體到期後提前一天轉按量

3.參數設定,設定目标地域,選擇對應的執行個體。點選立即執行。

基于OOS實作包年包月執行個體到期後提前一天轉按量

4.在執行詳情頁中可以檢視定時執行清單和所操作的資源。

基于OOS實作包年包月執行個體到期後提前一天轉按量