一键批量为云资源打标签

本文涉及的产品
资源编排,不限时长
简介: ## 背景 现如今,越来越多的人开始使用云产品,创建各种各样的云资源。随着使用云资源种类和数量的增多,我们越来越需要对它们进行分类管理,而标签就是一种很好的分类方式。 作为个人用户,以手动方式给每个云资源打标签倒在能接受的范围。但如果作为企业用户,要管理成百上千的云资源,每次创建一批云资源都需要手动挨个打标签实在是难以忍受。哪怕是写代码,也需要依次调用各个云产品的标签接口,或者是调用标

背景

现如今,越来越多的人开始使用云产品,创建各种各样的云资源。随着使用云资源种类和数量的增多,我们越来越需要对它们进行分类管理,而标签就是一种很好的分类方式。

作为个人用户,以手动方式给每个云资源打标签倒在能接受的范围。但如果作为企业用户,要管理成百上千的云资源,每次创建一批云资源都需要手动挨个打标签实在是难以忍受。哪怕是写代码,也需要依次调用各个云产品的标签接口,或者是调用标签服务的统一接口来给不同的参数,但不论哪种方式都不够简单直接。

资源编排 ROS 为云产品打标签

什么是 ROS

资源编排服务 ROS(Resource Orchestration Service)是阿里云提供的一项简化云计算资源管理的服务。用户可以遵循 ROS 定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如 ECS 实例、RDS 数据库实例)、资源间的依赖关系等。ROS 的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。点此 可以了解更多关于 ROS 的内容。

云产品中的每个资源实体和 ROS 中的资源一一对应,在 ROS 模板中通过定义云产品资源,即可通过 ROS 管理这些资源的完整生命周期(创建、更新、查询、删除)。点此 可以了解 ROS 所支持的数百个资源类型。

如何使用 ROS 为云产品打标签

当准备好一个模板后,要这个模板中的所有资源打上标签就非常简单,只需在使用模板创建 ROS 资源栈 时指定标签即可。

假设我们需要在地域为杭州,可用区为 cn-hangzhou-h 下创建 VPC 和 VSwitch,并为它们打上内容为 app:test 的标签。我们可以准备如下模板:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "VPC": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest-vpc"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": { "Ref": "VPC" },
        "ZoneId": "cn-hangzhou-h",
        "CidrBlock": "172.16.0.0/24",
        "VSwitchName": "mytest-vsw-h"
      }
    }
  }
}

然后借助 ROS SDK 或 API 来创建资源栈,并指定标签(注意替换<>的内容):

# pip install aliyun-python-sdk-ros
import json
from aliyunsdkcore.client import AcsClient
from aliyunsdkros.request.v20190910.CreateStackRequest import CreateStackRequest

client = AcsClient(
    '<AccessKeId>',
    '<AccessKeySecret>',
    'cn-hangzhou',
)
template = '''
<Template>
'''

req = CreateStackRequest()
req.set_StackName('vpc-vswitch-test')
req.set_TemplateBody(template)
req.set_TimeoutInMinutes(10)
req.set_Tags([{'Key': 'app', 'Value': 'test'}])
ret = client.do_action_with_exception(req)
print(ret)

当资源栈创建完成后,我们可以在 ROS 和 VPC 控制台上看到 ROS Stack、VPC、VSwitch 都打上了标签。
1.jpg

2.jpg

3.jpg

标签融合

有时候,我们并不总是希望所有资源的标签完全一样,某些资源我们希望有它独特的标签。我们可以在模板中为某些资源定义指定的标签,并在创建资源栈时指定公共的标签,ROS 会自动融合标签。

比如,我们在如下模板中为 VSwitch 添加特定标签 group:test

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "VPC": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest-vpc"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": { "Ref": "VPC" },
        "ZoneId": "cn-hangzhou-h",
        "CidrBlock": "172.16.0.0/24",
        "VSwitchName": "mytest-vsw-h",
        "Tags": [{ "Key": "group", "Value": "test" }]
      }
    }
  }
}

在使用此模板创建资源栈时,指定标签为 app:test,那么 ROS 会将所指定的标签融合到模板中的每个资源中,那么最终各资源的标签效果如下:

  • VPC 的标签为 app:test
  • VSwitch 的标签为 app:testgroup:test

标签更新

批量更新标签也是个常见的需求,通过 ROS 可以非常容易的对所有资源的标签进行更新。比如我们在一开始通过 ROS 创建了 VPC、VSwitch,其标签为 app:test,现在我们想要统一改成 app:normal,那么只需在调用更新资源栈时指定新的标签即可(注意替换<>的内容,其中模板仍为第一个示例中的模板):

# pip install aliyun-python-sdk-ros
import json
from aliyunsdkcore.client import AcsClient
from aliyunsdkros.request.v20190910.UpdateStackRequest import UpdateStackRequest

client = AcsClient(
    '<AccessKeId>',
    '<AccessKeySecret>',
    'cn-hangzhou',
)
template = '''
<Template>
'''

req = UpdateStackRequest()
req.set_StackId('<StackId>')
req.set_TemplateBody(template)
req.set_Tags([{'Key': 'app', 'Value': 'normal'}])
ret = client.do_action_with_exception(req)
print(ret)

当资源栈更新完成后,我们可以在 ROS 和 VPC 控制台上看到 ROS Stack、VPC、VSwitch 的标签均变成了 app:normal

总结

通过 ROS,为所有资源批量打标签、更新标签变得十分简单,而标签融合功能则同时满足了打标的统一性和特定性。真正地把人从手工运维中解放出来。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
弹性计算 运维 Shell
批量创建账号1
【4月更文挑战第30天】
52 3
|
7月前
|
弹性计算 运维 Shell
批量创建账号3
【4月更文挑战第30天】
52 2
|
7月前
|
弹性计算 运维 Shell
批量创建账号2
【4月更文挑战第30天】
47 1
|
7月前
|
弹性计算 运维 Shell
批量创建账号4
【4月更文挑战第30天】
73 1
|
DataWorks 数据库 数据安全/隐私保护
DataWorks调用数据源服务失败:没有绑定数据服务资源组 默认就是使用的公共资源组是么?
DataWorks调用数据源服务失败:没有绑定数据服务资源组 默认就是使用的公共资源组是么?
170 1
使用资源编排为云资源批量绑定标签
本场景介绍利用资源编排服务ROS(Resource Orchestration Service)在资源栈中创建资源,并同时为资源绑定标签,提升运维效率。
|
专有云
专有云数据集成自定义资源组服务器的初始化脚本
专有云数据集成自定义资源组服务器的初始化脚本
142 1
|
弹性计算 负载均衡 NoSQL
使用创建者标签对云上资源进行管理
简介: 如果您需要根据资源创建者来对资源进行管理、分权和分账等操作,那么创建者标签可以帮助您简单、快速地实现您的需求。
679 0
使用创建者标签对云上资源进行管理
|
弹性计算 数据安全/隐私保护
ECS基于标签动态进行资源权限管理
某上云企业希望进行权限动态管理,又不希望进行策略频繁变更的时候。可以基于标签进行授权,当添加标签的时候就有权限,删除标签的时候就没有权限。方便快捷的进行动态的权限管理。具体如何实现动态权限管理?本文将针对此问题进行介绍。
748 0
|
弹性计算 Android开发 iOS开发
【12月更新公告】资源概览全新上线,资源实例尽在掌握
资源概览模块全新上线,让您对云上资源数量和分布了然于胸;急需续费全新升级,链路更短,操作更方便;工具应用重磅加推,多款应用上线,帮助您解决实际工作中的多样问题;
16259 5