背景
如今,基础设施即代码(Infrastructure as code,IaC)是云资源管理和编排的趋势,基于IaC的管理模式,在提升云资源自动化管理能力,降低管理成本的同时,可以大大降低云资源管理平台的复杂度。
但是,考虑到账号下存在大量存量资源的情况,如果想要对所有的云资源以IaC的方式进行统一的管理,那么首先需要解决的事如果将存量的云资源转换为IaC的模式。
基于存量云上资源自动化导出为资源模版的方式有以下几种:
- 云平台提供的导出工具:一些云平台(如AWS、Azure、Google Cloud等)提供了自己的导出工具,可以将云上资源导出为模版文件。这些工具通常提供命令行接口或API来进行导出操作。
- 基于代码的导出:可以使用编程语言(如Python、Java等)编写脚本,通过调用云平台的API来获取资源的配置信息,并将其导出为模版文件。这种方式可以更加灵活地控制导出的内容和格式。
- 第三方工具:也有一些开源工具能够实现对存量资源的自动化导出,例如Terraformer,它是一个命令行工具,用于从已有的基础设施中生成 tf 和 tfstate 文件(Terraform 的反向工具)。但在实际测试中,Terraformer生成模版的可用性有待提高,需要对模版进行修改后才能正常使用。
无论使用哪种方式,都需要考虑以下几个方面:
- 导出的资源模版应该能够包含所需的资源配置信息和依赖关系,以便在需要时能够快速部署。
- 导出的模版文件应该能够与云平台的API进行兼容,以便能够顺利地导入和部署。
资源编排服务ROS(Resource Orchestration Service)是阿里云提供的一项简化云计算资源管理的服务。您可以通过Json、Yaml或者Terraform格式的模版,在模板中定义所需的阿里云资源(例如:ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。
目前ROS可以通过资源场景的功能实现存量资源的自动化导出为ROS、Terraform类型的模版,并根据生成的模版创建资源栈实现对存量资源的统一管理。
功能介绍
在ROS控制台创建资源场景,可以根据源标签、源资源组或者指定源资源的形式来选择需要IaC化的资源。
资源场景创建完成后,可以点击生成模版,选择生成模版的类型,这里可以导出ROS、Terraform类型的模版。
生成的ROS模版
生成的Terraform模版
您可以根据生成的模版进行资源的一键复制出和源节点相同架构的一组资源,或者通过资源纳管将存量的资源都导入到同一个资源栈进行管理。
存量资源导入资源栈中
您可以对资源栈进行更新、删除等操作,从而实现存量资源的IaC管理。