介绍:Operation Orchestration Service,简称OOS,是阿里云提供的自动化运维平台。您可以创建自定义的模板,或使用阿里云提供的公共模板,对ECS、RDS、SLB、VPC等资源进行自动化运维。
地址:https://oos.console.aliyun.com/
这是第一个版本:
这个版本只支持释放EIP,因为OOS有绑定EIP的公共模板就没有做绑定的操作
FormatVersion: OOS-2021-04-20 Description: en: Bulky Unassociate and release elastic IP (EIP) address by specified ECS instances. zh-cn: 批量解绑ECS实例的EIP。 name-en: ECS-BulkyUnassociateAndReleaseEIPs name-zh-cn: 批量解绑并释放ECS实例的EIP Parameters: regionId: Type: String Description: en: The id of region. zh-cn: 地域ID。 AssociationProperty: RegionId Default: '{{ ACS::RegionId }}' targets: Type: Json Description: en: The scope of instances. zh-cn: 要选择的实例范围。 AssociationProperty: Targets AssociationPropertyMetadata: ResourceType: 'ALIYUN::ECS::Instance' RegionId: regionId rateControl: Description: en: Concurrency rate of task execution. zh-cn: 任务执行的并发比率。 Type: Json AssociationProperty: RateControl Default: Mode: Concurrency MaxErrors: 0 Concurrency: 5 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: detachNetWorkInterfaceAndEipAndAttachFromInstance Action: 'ACS::ECS::ReleaseEipAddress' Description: en: Detach and delete the network interface and eip from the instance. zh-cn: 将弹性IP从实例上解绑并删除。 Properties: regionId: '{{ regionId }}' instanceId: '{{ ACS::TaskLoopItem }}' Loop: RateControl: '{{ rateControl }}' Items: '{{ getInstance.instanceIds }}'
但是之前解绑释放EIP(弹性ip)并且再绑定EIP会出现一个问题.阿里云的机制绑定EIP时会优先绑定之前已经绑定过的EIP,如果之前的EIP还未被使用就会重新被绑定,但是目前业务需求是需要每次EIP必须和之前不一样,于是修改了一下;
第二个版本:
FormatVersion: OOS-2021-04-20 Description: '' Parameters: regionId: Type: String Description: en: The id of region. zh-cn: 地域ID。 AssociationProperty: RegionId Default: '{{ ACS::RegionId }}' targets: Type: Json Description: en: The scope of instances. zh-cn: 要选择的实例范围。 AssociationProperty: Targets AssociationPropertyMetadata: ResourceType: 'ALIYUN::ECS::Instance' RegionId: regionId internetChargeType: Description: en: EIP measurement method zh-cn: EIP的计费方式 Type: String AllowedValues: - PayByBandwidth - PayByTraffic Default: PayByBandwidth bandwidth: Description: en: Peak bandwidth of eip zh-cn: EIP的带宽峰值 Type: Number Default: 5 rateControl: Description: en: Concurrency rate of task execution. zh-cn: 任务执行的并发比率。 Type: Json AssociationProperty: RateControl Default: Mode: Concurrency MaxErrors: 0 Concurrency: 5 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: detachNetWorkInterfaceAndEipAndAttachFromInstance Action: 'ACS::Template' Properties: TemplateName: ECS-AllocateEipAddressAndAttachToInstance Parameters: regionId: '{{ regionId }}' internetChargeType: '{{ internetChargeType }}' bandwidth: '{{ bandwidth }}' instanceId: '{{ ACS::TaskLoopItem }}' Loop: RateControl: '{{ rateControl }}' Items: '{{ getInstance.instanceIds }}'