OOS简介
Operation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更详细的介绍请参见什么是运维编排服务。
场景介绍
预留实例券到期当天自动购买相同规格的预留实例券。
创建模板
1.登陆OOS控制台,找到我的模板,点击创建模板。
2.选择空白模版。
3.复制下文提供的模板到YAML栏中,输入模板名称,点击创建模板。
模板内容:
FormatVersion: OOS-2019-06-01
Description:
en: Bulky clone reserved instances
zh-cn: 批量克隆预留实例券。
name-en: ACS-ECS-BulkyCloneReservedInstances
name-zh-cn: 批量克隆预留实例券
categories:
- instance_manage
Parameters:
regionId:
Type: String
Description:
en: The id of region.
zh-cn: 地域ID。
AssociationProperty: RegionId
Default: '{
{ ACS::RegionId }}'
tags:
Description:
en: 'The resource tag(example:{"k1":"v1","k2":"v2"}).'
zh-cn: '资源标签(例:{"k1":"v1","k2":"v2"})。'
Type: Json
AssociationProperty: Tags
period:
Description:
en: The term of the reserved instance.
zh-cn: 购买预留实例券的时长。
Type: Number
MinValue: 1
MaxValue: 1
Default: 1
periodUnit:
Description:
en: The term unit of the reserved instance.
zh-cn: 购买预留实例券的时长单位。
Type: String
AllowedValues:
- Month
- Year
Default: Year
OOSAssumeRole:
Description:
en: The RAM role to be assumed by OOS.
zh-cn: OOS扮演的RAM角色。
Type: String
Default: OOSServiceRole
RamRole: '{
{ OOSAssumeRole }}'
Tasks:
- Name: describeReservedInstances
Action: 'ACS::ExecuteAPI'
Description:
en: Query purchased reserved instances.
zh-cn: 获取预留实例券ID。
Properties:
Service: ECS
API: DescribeReservedInstances
Parameters:
RegionId: '{
{ regionId }}'
Tags: '{
{ tags }}'
Outputs:
reservedInstanceIds:
Type: List
ValueSelector: '.ReservedInstances.ReservedInstance[] | select(.ExpiredTime[0:11] == "{
{ACS::CurrentDate}}") | .ReservedInstanceId'
- Name: bulkyCloneReservedInstance
Action: 'ACS::ECS::CloneReservedInstance'
Description:
en: Clone reserved instances.
zh-cn: 克隆预留实例券。
Properties:
regionId: '{
{ regionId }}'
reservedInstanceId: '{
{ ACS::TaskLoopItem }}'
period: '{
{ period }}'
periodUnit: '{
{ periodUnit }}'
Loop:
RateControl:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
Items: '{
{ describeReservedInstances.reservedInstanceIds }}'
Outputs:
reservedInstanceIds:
AggregateType: 'Fn::ListJoin'
AggregateField: reservedInstanceId
Outputs:
reservedInstanceId:
Type: String
ValueSelector: reservedInstanceId
Outputs:
reservedInstanceIds:
Type: List
Value: '{
{ bulkyCloneReservedInstance.reservedInstanceIds }}'
定时执行模版
1.找到定时运维,点击创建,选择周期性重复执行,设置定时执行的规则。
截图所示规则:截止规则结束时间,每天0点0分定时执行制指定模板。
2.模板选择,选择上文创建的模板。
3.参数设置,选择目标地域,标签,预留实例券设置时长单位(默认Year),点击立即执行。
4.在执行详情页中可以查看定时执行列表和所操作的资源。