云资源自动化 for Terraform 实现原理

这篇将介绍 Terraform Tencent Cloud Provider 的目录结构。

相关产品
云资源自动化 for Terraform 产品页,含版本规格、价格与购买入口。

一、目录结构

├─terraform-provider-tencentcloud 根目录│ ├─main.go 程序入口文件│ ├─AUTHORS 作者信息│ ├─CHANGELOG.md 变更日志│ ├─LICENSE 授权信息│ ├─debug.tf.example 调试配置文件示例│ ├─examples 示例配置文件目录│ │ ├─tencentcloud-eip EIP示例tf文件│ │ ├─tencentcloud-instance CVM示例tf文件│ │ ├─tencentcloud-nat NAT网关示例tf文件│ │ ├─tencentcloud-vpc VPC示例tf文件│ │ └─ … 更多examples目录│ ├─tencentcloud Provider核心目录│ │ ├─basic_test.go 基础单元测试│ │ ├─config.go 公共配置文件│ │ ├─data_source_tc_availability_zones.go 可用区查询│ │ ├─data_source_tc_availability_zones_test.go│ │ ├─data_source_tc_nats.go NAT网关列表查询│ │ ├─data_source_tc_nats_test.go│ │ ├─data_source_tc_vpc.go VPC查询│ │ ├─data_source_tc_vpc_test.go│ │ ├─… 更多Data Source│ │ ├─helper.go 一些公共函数│ │ ├─provider.go Provider核心文件│ │ ├─provider_test.go│ │ ├─resource_tc_eip.go EIP资源管理程序│ │ ├─resource_tc_eip_test.go│ │ ├─resource_tc_instance.go CVM实例资源管理程序│ │ ├─resource_tc_instance_test.go│ │ ├─resource_tc_nat_gateway.go NAT网关资源管理程序│ │ ├─resource_tc_nat_gateway_test.go│ │ ├─resource_tc_vpc.go VPC网关资源管理程序│ │ ├─resource_tc_vpc_test.go│ │ ├─… 更多资源管理程序│ │ ├─service_eip.go 封装的EIP相关Service│ │ ├─service_instance.go 封装的CVM实例相关Service│ │ ├─service_vpc.go 封装的VPC相关Service│ │ ├─…│ │ ├─validators.go 公共的参数校验函数│ ├─vendor 依赖的第三方库│ ├─website Web相关文件│ │ ├─tencentcloud.erb 文档左侧菜单栏│ │ ├─docs 文档markdown源文件目录│ │ │ ├─d data相关文档(data_source_*)│ │ │ │ ├─availability_zones.html.md│ │ │ │ ├─nats.html.markdown│ │ │ │ ├─vpc.html.markdown│ │ │ │ ├─…│ │ │ ├─index.html.markdown│ │ │ ├─r resource相关文档(resource_*)│ │ │ │ ├─instance.html.markdown│ │ │ │ ├─nat_gateway.html.markdown│ │ │ │ ├─vpc.html.markdown│ │ │ │ └─…

结构主要分五部分:

·main.go:插件入口。

·examples:示例目录,其中包含的示例可直接使用。

·tencentcloud:插件目录,存放的业务代码。其中:

·provider.go:插件的根源,用于描述插件的属性。例如,配置的密钥、支持的资源列表及回调配置等。

·data_source_*.go:定义一些用于读调用的资源,主要是查询接口。

·resource_*.go:定义一些写调用的资源,包含资源增删改查接口。

·service_*.go:按资源大类划分的一些公共方法。

·vendor:依赖的第三方库。

·website:文档,重要性同 examples。

二、Provider 生命周期

Terraform 执行过程如下:

说明:

1 – 4:寻找 Provider,此时加载 tencentcloud 插件。

5:读取用户的配置文件,通过配置文件,可以获得分别属于哪种资源,以及每个资源的状态。

6:根据资源的状态,调用不同的函数(Create/Update/Delete/Update)。

·Create:当在 .tf 文件增加一个新的资源配置时,Terraform 判断为 Create。

·Update:当修改 .tf 文件中已经创建好的资源一个或多个参数时,Terraform 判断为 Update。

·Delete:当把 .tf 文件中已经创建好的资源配置删掉后,或执行 terraform destroy 命令时,Terraform 判断为 Delete。

·Read:Read 是一个查询资源的操作,实际作用是检查资源是否存在,以及更新资源属性到本地。

tencentcloud-sdk-go:tencentcloud-sdk-go 是基于 Tencent Cloud API 的 Go 版 SDK,其作用为调用 Tencent Cloud API 来实现资源管理。

赞 (0)
上一篇 4天前
下一篇 4天前