如何将管理控制台创建的资源转换为Terraform代码(免第三方扫描)
控制台创建资源转Terraform代码(无第三方账号扫描)实现方案
存在完全符合要求的实现路径,全程无需授权任何第三方软件访问、扫描你的云账号,所有操作均可通过官方原生能力完成,不存在账号权限外泄风险,具体可落地的方案如下:
- 方案一:使用云厂商官方原生导出能力
目前主流公有云均在官方CLI、控制台内置了Terraform格式资源导出功能,全链路走云厂商官方服务通道,不经过任何第三方节点:- 完成控制台资源创建后,在你本地环境安装对应云厂商的官方命令行工具,配置仅拥有资源只读权限的账号凭证,凭证全程只存储在你的本地设备,不会向外泄露
- 调用官方CLI的Terraform导出子命令,指定需要导出的目标资源ID/资源组范围,即可直接生成对应资源的Terraform配置文件与初始状态文件
- 导出时建议跳过云账号默认创建的系统资源、托管资源,仅选择你手动创建的业务资源,减少后续代码调整的工作量
- 方案二:使用Terraform官方原生导入生成能力
该方案完全基于Terraform开源版原生功能实现,无需安装任何第三方插件、无需对接第三方SaaS服务:- 本地安装官方发布的Terraform版本,在工作目录下配置对应云厂商的Provider,云账号访问凭证仅保存在你本地环境变量或本地认证文件中
- 编写
import块,逐一填写你在控制台创建的资源对应的Terraform资源类型、资源ID - 执行命令
terraform plan -generate-config-out=target.tf,Terraform会在本地直接调用云厂商官方API读取你指定资源的配置信息,自动生成对应的Terraform代码写入target.tf文件 - 生成完成后依次执行
terraform init、terraform plan,校验生成的代码和实际线上资源的配置是否一致,无偏差即可进入后续调整环节
重要提示:上述两个方案的所有资源读取、代码生成动作均在你的本地环境运行,涉及的API请求直接从本地发往对应云厂商的官方服务端点,不会将你的云账号资源信息同步给任何第三方,完全满足“禁止第三方软件扫描云账号”的要求。
生成的初始Terraform代码通常会包含控制台自动填充的默认冗余参数、云侧自动生成的不可编辑字段,你可以根据自身部署需求删除冗余字段、抽离可配置变量、拆分模块结构,调整完成后再次执行terraform plan确认执行计划符合预期,就可以将这套代码用于后续的资源批量创建、版本化迭代部署流程。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

