背景
如果你使用过阿里云的云产品/服务,你会发现其中有不少需要手动点击“开通”。比如初次使用 SLS 日志服务时,就会进入下面的界面:
作为个人用户,以手动方式开通一个个云产品倒也在能接受的范围。但如果作为企业用户,或者对数个阿里云账户下的多款产品有开通需求,手动开通的方式将会无比痛苦和无聊。聪明而又想要“偷懒”的你一定想要一种自动化的方式来终结这场噩梦。
云产品自动开通 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
日志服务),点击创建即可自动化开通对应服务。
当然,如果想一次性开通多个云产品,只需在模板中添加多个 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 更是可以打通从产品开通到资源交付的完整链路,完全实现部署自动化,向手工运维说”不“!