使用系统运维编排定时删除ROS资源栈

当需要对资源编排(ROS)资源栈进行自动化删除时,可以使用系统运维管理 OOS(CloudOps Orchestration Service)配置周期性删除任务,来定期删除指定自定义标签的ROS资源栈。

操作步骤

步骤一:为OOS配置ROS资源栈的删除权限

为确保运维编排服务(OOS)能够安全地访问和操作资源编排服务(ROS)的资源栈,需为其创建一个服务角色并授予相应的权限。

  1. 创建OOS服务角色。

    1. 使用RAM管理员登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 角色

    3. 角色页面,单击创建角色

    4. 创建角色页面,选择信任主体类型云服务,然后在信任主体名称选择系统运维编排,最后单击确定

  2. (可选)创建自定义权限策略。

    为遵循最小权限原则,可通过创建自定义权限策略实现更精细化的权限管控。

    创建自定义权限策略步骤

    1. 使用RAM管理员登录RAM控制台

    2. 在左侧导航栏,选择权限管理 > 权限策略

    3. 权限策略页面,单击创建权限策略

    4. 创建权限策略页面,单击脚本编辑页签。输入权限策略内容。

      {
        "Version": "1",
        "Statement": [
          {
            "Action": [
              "ros:DeleteStack",
              "ros:ListStacks"
            ],
            "Resource": "*",
            "Effect": "Allow"
          }
        ]
      }
    5. 创建权限策略页面,单击确定

    6. 创建权限策略对话框,输入策略名称备注,然后单击确定

  3. OOS服务角色授权。

    1. 使用RAM管理员登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 角色

    3. 角色页面,单击目标RAM角色操作列的新增授权

    4. 新增授权面板,为RAM角色授权。然后单击确定完成授权。

      • 系统策略:若不使用自定义策略,在搜索框中输入AliyunROSFullAccess并添加该权限,授予ROS的完全管理权限。

      • 自定义策略:选择创建的自定义权限策略。

步骤二:创建ROS资源栈并添加标签

为确保自动化任务能准确识别目标,需要为希望定时删除的资源栈添加特定标签。

  1. 登录资源编排控制台

  2. 在左侧导航栏,单击资源栈

  3. 在顶部菜单栏的地域下拉列表,选择资源栈的所在地域,例如:华东1(杭州)。

  4. 资源栈列表页面,单击创建资源栈,在指定模板区域中单击选择已有模板

  5. 模板录入方式选择输入模板,然后单击下一步

    示例模板

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      zh-cn: 创建VPC下的ECS实例,含自定义网络配置、安全组、系统盘设置及公网访问选项。
      en: Creating an ECS instance under a VPC, including custom network configurations, security group settings, system disk configurations, and options for public internet access.
    Parameters:
      VSwitchZoneId:
        Type: String
        Label:
          en: VSwitch Availability Zone
          zh-cn: 交换机可用区
        Description:
          en: Availability Zone ID.<br><b>note:<font color='blue'>before selecting, please confirm that the Availability Zone supports the specification of creating ECS resources,which is recommended to be different from other VSwitch Availability Zone</font></b>
          zh-cn: 可用区ID。<br><b>注: <font color='blue'>选择前请确认该可用区是否支持创建ECS资源的规格,建议与其他交换机可用区不同</font></b>
        AssociationProperty: ALIYUN::ECS::Instance:ZoneId
      InstanceType:
        Type: String
        Label:
          en: Instance Type
          zh-cn: 实例规格
        Description:
          en: 'Fill in the specifications that can be used under the VSwitch availability zone;</b></font><br>general specifications:<font color=''red''><b>ecs.c5.large</b></font><br>note: a few zones do not support general specifications<br>see detail: <a href=''https://www.alibabacloud.com/help/en/doc-detail/25378.html'' target=''_blank''><b><font color=''blue''>Instance Specification Family</font></a></b>'
          zh-cn: 填写VSwitch可用区下可使用的规格;<br>通用规格:<font color='red'><b>ecs.c5.large</b></font><br>注:可用区可能不支持通用规格<br>规格详见:<a href='https://help.aliyun.com/document_detail/25378.html' target='_blank'><b><font color='blue'>实例规格族</font></a></b>
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          ZoneId: VSwitchZoneId
      InstanceImageId:
        Type: String
        Label:
          en: Image
          zh-cn: 镜像
        Description:
          en: Image ID,see detail:<b><a href='https://www.alibabacloud.com/help/en/doc-detail/112977.html' target='_blank'><font color='blue'>Find the mirror</font></a></b>
          zh-cn: 镜像ID,详见:<b><a href='https://help.aliyun.com/document_detail/112977.html' target='_blank'><font color='blue'>查找镜像</font></a></b>
        AssociationProperty: ALIYUN::ECS::Image::ImageId
        AssociationPropertyMetadata:
          InstanceType: ${InstanceType}
          SupportedImageOwnerAlias:
            - system
            - self
            - others
        Default: centos_7_04_64_20G_alibase_201701015.vhd
      SystemDiskSize:
        Type: Number
        Label:
          en: System Disk Space
          zh-cn: 系统盘空间
        Description:
          en: 'System disk size, range of values: 20-500, units: GB.'
          zh-cn: 系统盘大小, 取值范围:[20, 500], 单位:GB。
        Default: 40
      InstancePublicIP:
        Type: Boolean
        Label:
          en: Allocate Public IP
          zh-cn: 分配公网IP
        Description:
          en: Whether to assign a common IP.
          zh-cn: 是否分配公共IP。
        Default: false
      InstancePassword:
        Type: String
        NoEcho: true
        Label:
          en: Instance Password
          zh-cn: 实例密码
        Description:
          en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in).
          zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)。
        ConstraintDescription:
          en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in).
          zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)。
        AssociationProperty: ALIYUN::ECS::Instance::Password
      SystemDiskCategory:
        Type: String
        Label:
          en: System Disk Type
          zh-cn: 系统盘类型
        AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
        AssociationPropertyMetadata:
          LocaleKey: DiskCategory
          InstanceType: ${InstanceType}
    Resources:
      EcsVpc:
        Type: ALIYUN::ECS::VPC
        Properties:
          CidrBlock: 192.168.0.0/16
          VpcName:
            Fn::Join:
              - '-'
              - - StackId
                - Ref: ALIYUN::StackId
      EcsSecurityGroup:
        Type: ALIYUN::ECS::SecurityGroup
        Properties:
          VpcId:
            Ref: EcsVpc
          SecurityGroupEgress:
            - DestCidrIp: 0.0.0.0/0
              IpProtocol: all
              NicType: intranet
              PortRange: '-1/-1'
              Priority: 1
          SecurityGroupIngress:
            - IpProtocol: all
              NicType: intranet
              PortRange: '-1/-1'
              Priority: 1
              SourceCidrIp: 0.0.0.0/0
      EcsVSwitch:
        Type: ALIYUN::ECS::VSwitch
        Properties:
          ZoneId:
            Ref: VSwitchZoneId
          VpcId:
            Ref: EcsVpc
          CidrBlock: 192.168.0.0/24
      EcsInstance:
        Type: ALIYUN::ECS::Instance
        Properties:
          VpcId:
            Ref: EcsVpc
          VSwitchId:
            Ref: EcsVSwitch
          SecurityGroupId:
            Ref: EcsSecurityGroup
          ImageId:
            Ref: InstanceImageId
          AllocatePublicIP:
            Ref: InstancePublicIP
          InstanceType:
            Ref: InstanceType
          IoOptimized: optimized
          Password:
            Ref: InstancePassword
          PrivateIpAddress: 192.168.0.1
          SystemDiskCategory:
            Ref: SystemDiskCategory
          SystemDiskSize:
            Ref: SystemDiskSize
    Outputs:
      EcsInstanceId:
        Value:
          Fn::GetAtt:
            - EcsInstance
            - InstanceId
    Metadata:
      ALIYUN::ROS::Interface:
        ParameterGroups:
          - Parameters:
              - VSwitchZoneId
              - InstanceType
              - InstanceImageId
              - SystemDiskSize
              - InstancePublicIP
              - SystemDiskCategory
              - InstancePassword
            Label:
              default: ECS
        TemplateTags:
          - acs:example:弹性计算:创建VPC网络下的ECS实例
      ALIYUN::ROS::Composer:
        450ea67e:
          Rect:
            - 520
            - 410
            - 40
            - 100
            - 1
            - 0
          ResT: Composer::ROSParameter::AlibabaCloud
        8f422d83:
          Parent: 450ea67e
          Rect:
            - 480
            - 340
            - 60
            - 150
            - 2
            - 0
          ResT: Composer::ROSParameter::Region
        5f96ba9a:
          Res:
            - EcsVpc
          Parent: 8f422d83
          Rect:
            - 440
            - 270
            - 80
            - 200
            - 3
            - 0
        0bb9d91e:
          Res:
            - EcsVSwitch
          Parent: 5f96ba9a
          Rect:
            - 400
            - 200
            - 100
            - 250
            - 4
            - 0
        1cfb8ee6:
          Res:
            - EcsSecurityGroup
          Parent: 5f96ba9a
          Rect:
            - 278
            - 123
            - 151
            - 300
            - 6
            - 0
        acea0722:
          Res:
            - EcsInstance
          Parent: 0bb9d91e
          Rect:
            - 40
            - 40
            - 270
            - 330
            - 7
            - 0
          Layer:
            - 1cfb8ee6
    
  6. 配置参数页面,输入资源栈名称,并设置参数。

    • 交换机可用区:专有网络下的交换机可用区ID。例如可用区K。

    • 实例规格:实例规格族。例如ecs.c6e.large。

    • 系统盘类型:块存储的类型。例如ESSD云盘。

    • 实例密码:实例的密码。例如Test_12****。

  7. 配置资源栈内,单击添加标签,添加自定义标签(例如k134:v134)单击确定创建资源栈

步骤三:创建OOS定时删除任务

  1. 登录系统运维管理OOS控制台

  2. 在左侧选择自动化任务 > 定时任务在定时任务页面,单击创建

  3. 在创建定时运维任务页面,定时设置区域选择周期性重复执行,并设置参数。

  4. 选择模板区域,选择公共模板,然后搜索并选中ACS-ROS-BulkyDeleteStack模板。

  5. 设置模板参数区域,配置以下参数:

    • 地域ID:选择待删除的ROS资源栈所在的地域。

    • 资源栈标签:输入用于匹配待删除资源栈的标签(例如k134:v134)。

    • 执行使用到的权限的来源:选择配置好的OOS服务角色。

  6. 单击创建,保存任务。

步骤四:结果验证

  1. 检查OOS任务状态:

    1. 登录系统运维管理OOS控制台

    2. 在左侧选择自动化任务 > 定时任务找到创建的任务。在操作栏单击详情,进入任务详情页。

    3. 当执行时间到达后,在历史执行查看任务执行状态。

  2. 确认资源栈已删除:

    1. 登录资源编排控制台

    2. 在左侧导航栏,单击资源栈

    3. 目标资源栈状态为删除中或已从列表中移除。