使用资源编排ROS一键批量开通阿里云产品

背景

如果你使用过阿里云的云产品/服务,你会发现其中有不少需要手动点击“开通”。比如初次使用 SLS 日志服务时,就会进入下面的界面:
使用资源编排ROS一键批量开通阿里云产品

作为个人用户,以手动方式开通一个个云产品倒也在能接受的范围。但如果作为企业用户,或者对数个阿里云账户下的多款产品有开通需求,手动开通的方式将会无比痛苦和无聊。聪明而又想要“偷懒”的你一定想要一种自动化的方式来终结这场噩梦。

云产品自动开通 OpenAPI

幸运的是,阿里云中有越来越多的云产品提供了自动化开通的 OpenAPI,这意味着我们能够通过程序的方式调用接口来实现自动化开通。当然,我们也可以通过 OpenAPI Explorer 或者阿里云 CLI 来调用对应云产品的 OpenAPI。

截止到今天,目前有如下云产品提供了自动化开通 OpenAPI:

产品名 产品 Code API 版本 API 名称
批量计算 BatchCompute 2018-12-13 OpenBatchComputeService
移动开发平台 Mhub 2017-08-25 OpenEmasService
对象存储 OssAdmin 2019-04-22 OpenOssService
混合云备份服务 hbr 2017-09-08 OpenHbrService
日志服务 sls 2019-10-23 OpenSlsService、GetSlsService
表格存储 ots 2016-06-20 OpenOtsService
自然语言处理 nlp 2020-06-29 OpenAlinlpService
API 网关 CloudAPI 2016-07-14 OpenApiGatewayService
文件存储 nas 2017-06-26 OpenNASService
密钥管理服务 KMS 2016-01-20 OpenKmsService、DescribeKmsService
智能媒体管理 IMM 2017-09-06 OpenImmService
应用高可用服务 ahas 2019-09-01 OpenAhasService
私网连接 Privatelink 2020-04-15 OpenPrivateLinkService

OpenAPI 解决了可否自动化的问题,但紧接着我们就又遇到一个问题:如果我们要开通的云产品有很多个,甚至其中一部分我们也不知道是否开通过,自己实现一套自动化开通的程序就要付出一些心智成本来考虑异常情况,实际使用体验上仍旧不够“傻瓜化”,那还能不能更加简单?

资源编排 ROS 自动开通云产品

什么是 ROS

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

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

如何使用 ROS 自动开通云产品

基于 ROS 的自动化开通方案,是在 ROS 模板中定义 ALIYUN::ROS::AutoEnableService 资源并设置产品名称 ServiceName 来开通云产品,其背后则是借助云产品提供的自动化开通 OpenAPI 来完成开通。在此基础上,ROS 保证了对各类异常情况的处理以及开通行为的幂等,最大化地减少开通过程中的心智负担。

开通一个云产品的 ROS 模板如下:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "ServiceName": {
      "Type": "String",
      "Default": "SLS"
    }
  },
  "Resources": {
    "AutoEnableService": {
      "Type": "ALIYUN::ROS::AutoEnableService",
      "Properties": {
        "ServiceName": {
          "Ref": "ServiceName"
        }
      }
    }
  }
}

模板中定义了名为 ServiceName 的参数,并被 ALIYUN::ROS::AutoEnableService 所引用,这样我们就能在指定想要开通的服务。访问 ROS 控制台,输入上述模板,在下一步中参数录入中输入 ServiceName 为想要开通的云产品(比如 SLS 日志服务),点击创建即可自动化开通对应服务。
使用资源编排ROS一键批量开通阿里云产品

使用资源编排ROS一键批量开通阿里云产品

当然,如果想一次性开通多个云产品,只需在模板中添加多个 ALIYUN::ROS::AutoEnableService 即可。如果觉得要开通大量资源时在模板里要写 N 个相同类型的资源而感到繁琐,那么 ROS 的资源 Count 功能一定是不二之选,可以将 N 缩减为 1

开通 N 个云产品的 ROS 模板如下:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "ServiceName": {
      "Type": "Json",
      "Default": ["SLS", "ApiGateway"]
    }
  },
  "Resources": {
    "AutoEnableService": {
      "Type": "ALIYUN::ROS::AutoEnableService",
      "Properties": {
        "ServiceName": {
          "Fn::Select": [{ "Ref": "ALIYUN::Index" }, { "Ref": "ServiceName" }]
        }
      },
      "Count": {
        "Fn::Length": { "Ref": "ServiceName" }
      }
    }
  }
}

ROS 的支持自动化开通的云产品包括 ApiGateway、BatchCompute、EMAS、NAS、HBR、NLP、OSS、OTS、SLS 等九款产品,并会不断丰富。

总结

随着 DevOps 理念的深入人心,手动操作的方式渐行渐远。资源编排 ROS 基于模板的形式全面践行基础设施即代码 (IaC) 的理念,依托云产品自动化开通 OpenAPI 构建了更加简单、高效、可靠的自动化开通体验。不仅于此,ROS 更是可以打通从产品开通到资源交付的完整链路,完全实现部署自动化,向手工运维说”不“!

上一篇:风起云涌!vTrus 国产证书阿里云首发


下一篇:云上资源自动化部署新模式