存量资源导入
逐一为存量云资源手工编写 Terraform 代码并维护状态文件,成本较高且容易出错。通过存量资源导入功能,您可以扫描指定地域中的已有云资源,自动生成 Terraform 代码和状态文件,将资源纳入版本管理,或在调整代码后用于其他环境部署。
功能概述
存量资源导入将已有云资源反向生成 Terraform 代码与状态文件,具备以下特性:
适用场景:
将通过云产品控制台创建的 VPC、ECS、SLB 等资源纳入 Terraform 管理。
基于生产环境资源结构生成 Terraform 代码初稿,经调整后用于测试等其他环境部署。
定期留存关键资源的配置快照,辅助审计和变更追踪。
控制台入口:侧边栏 任务 > 存量资源导入。
对云资源的影响:只读,导入过程仅调用查询类接口,不会创建、修改或删除被扫描的云资源。
前提条件
开始操作前,请确认满足以下条件:
目标阿里云账号下已存在待导入的云资源(例如已创建的VPC、ECS、SLB等)。
当前登录身份具备管理存量资源导入任务的 IaCService 权限。如使用 RAM 用户操作,需由阿里云账号授予
AliyunIaCServiceFullAccess系统策略,或按需创建自定义策略授予iacservice:*ResourceExportTask*相关操作权限。当前登录身份具备查询所选云资源的权限。
将已有云资源导入为Terraform代码
完整流程分为三步:
创建导入任务并配置资源扫描范围。
执行任务,生成 Terraform 代码和状态文件。
审查导入结果,并基于成功的导入版本创建模板继续维护。
步骤一:创建导入任务
登录自动化服务台控制台。
在侧边栏选择 任务 > 存量资源导入,进入存量资源导入列表页。
单击 新建任务,填写以下必填项。
任务名称:长度2~129个字符,支持字母、数字、中文及
-_.,首尾字符不能是特殊字符。建议按“环境-资源-地域”格式命名,例如 prod-vpc-hangzhou,方便后续在列表中识别。同一阿里云账号下的任务名称不能重复。Terraform Provider版本:默认取系统最新 alicloud Provider 版本。如果后续需要将生成的代码合入已有 Terraform 项目,建议选择与目标项目一致的 Provider 版本,避免属性或资源定义不兼容。
资源类型:选择需要导入的一种或多种资源类型,例如选择
alicloud_vpc资源类型。也可单击 产品筛选 按钮按产品维度选择(例如选择 VPC 产品,系统自动展开为该产品已支持的所有资源类型)。地域:每个任务只能选一个地域。不支持跨地域导入。多地域资源需要按地域创建多个任务。
可以通过以下选项缩小扫描范围:
任务描述:简要描述导入任务的用途,便于团队协作时识别。
可用区:每个任务最多选1个可用区。
资源组ID:按资源组缩小范围,可选多个资源组。
资源属性过滤条件:按资源属性的等值匹配方式过滤,例如仅导入名称为
demo-vpc的资源。资源属性变量:指定需要在生成代码中提取为
variable的属性,便于在其他环境中注入不同的值。
单击 高级选项 可配置以下附加参数:
触发模式:默认为手动触发。选择 自动触发 后,以下情况会自动执行一次任务:
创建任务。
修改资源类型、地域、可用区、资源组 ID 或资源属性过滤条件。
将触发模式从其他模式切换为自动触发。
Terraform版本:指定执行导入任务时使用的 Terraform 引擎版本。该版本独立于 Terraform Provider 版本。
导入路径:可以将生成结果写入指定的 OSS 位置。选择 OSS 后,需要分别配置:
Terraform 代码 ZIP 包的 OSS 路径,文件名以
.zip结尾。Terraform 状态文件的 OSS 路径,文件名以
.tfstate结尾。
请确保当前登录身份对目标 OSS 路径具备写入权限。
4. 单击 提交 后,任务出现在列表中。
步骤二:执行导入
如果任务使用手动触发模式,请在任务列表中找到目标任务,然后单击 执行。
任务执行过程中,系统会扫描指定地域和资源范围,并生成 Terraform 代码和状态文件。执行耗时取决于所选资源类型和实际资源数量。
最近一次导入版本可能显示以下状态:
控制台状态 | API 值 | 说明 |
执行中 |
| 任务已创建,等待开始执行 |
执行中 |
| 正在扫描资源或生成文件 |
成功 |
| Terraform 代码和状态文件生成成功 |
失败 |
| 执行失败,可在任务详情中查看原因 |
被取消 |
| 已提交取消请求并将当前版本标记为取消 |
任务每执行一次都会创建一个新的导入版本,版本号从 v1 开始依次递增。
执行过程中可以提交取消请求。取消后,当前版本显示为“被取消”。
任务执行期间不能再次触发、修改或删除。请等待当前执行结束或取消状态生效后再进行操作。
步骤三:使用导入结果
任务执行成功后,进入任务详情页并选择相应的导入版本。
查看和下载结果
可以通过以下方式使用生成结果:
模板详情:查看生成的 Terraform 代码,并通过左侧文件树切换文件。
状态文件:查看生成的
terraform.tfstate文件。下载代码:在模板详情页签中单击 下载,下载 Terraform 代码 ZIP 包。
下载状态文件:在状态文件页签中单击 下载,下载
terraform.tfstate。查看日志:如果执行失败,可以在详情页查看或下载执行日志。
如果创建任务时配置了 OSS 导出路径,代码 ZIP 包和状态文件会分别写入指定的 OSS 路径。
审查导入结果
将导入结果用于实际 Terraform 管理前,建议完成以下检查:
检查生成代码中的资源类型、地域和资源标识是否符合预期。
检查资源之间的引用和依赖关系。
检查是否存在需要删除或改写的环境相关属性。
检查是否包含敏感信息。
在目标环境中执行
terraform plan,确认计划结果符合预期后再执行terraform apply。
导入结果是指定时间点的资源配置快照,不等同于可直接执行的回滚备份。
创建模板继续维护
如果需要在自动化服务台中继续维护导入结果:
进入 模板 页面。
单击 创建模板。
选择 资源导出 作为模板来源。
选择对应的资源导出任务。
选择状态为成功的导入版本。
完成模板创建,并根据实际需求修改和发布模板版本。
不要直接使用生产环境的状态文件管理测试环境资源。跨环境部署时,应调整地域、资源名称、网络配置、资源标识和变量值,并通过 terraform plan 确认变更范围。
使用限制
存量资源导入功能存在以下限制:
任务数量:默认最多创建 100 个任务/阿里云账号。实际配额以控制台显示为准。
地域数量:每个任务只能选择一个地域。多地域场景需要拆分为多个任务。
资源类型数量:每个任务最多选择 100 种资源类型。
可用区数量:每个任务最多选择一个可用区。
资源支持范围:仅支持当前所选 Provider 版本中已经接入存量资源导入能力的资源类型。
并发操作:任务执行期间不能再次执行、修改或删除该任务。
结果完整性:部分只读属性、敏感属性或无法通过 Provider 表达的属性可能不会出现在生成代码中。使用前必须完成代码审查。
常见问题
导入任务失败提示“资源类型不在支持列表”
指定的资源类型尚未接入存量资源导入能力,或者当前 Provider 版本不支持该资源类型。
处理建议:
使用 产品筛选 选择系统当前支持的资源类型。
尝试选择其他兼容的 Provider 版本。
对暂不支持的资源手工编写 Terraform 代码,并通过模板继续维护。
提示“同名重复”无法提交
同一阿里云账号下的任务名称不能重复。请修改任务名称,例如增加环境、地域或序号后缀,
例如 prod-vpc-hangzhou-v2。
如何导入多个地域的资源
每个任务只能选择一个地域。多地域场景需要按照地域拆分为多个任务。
如果通过 OpenAPI 批量创建任务,请为每个任务配置唯一名称,并分别指定地域。
能否删除失败或被取消的导入版本
不能。只能删除 成功 状态的版本。失败、取消、进行中的版本调用删除会被拒绝,避免误删执行历史。如确不再需要,可保留以便日后排查。