Terraform alicloud provider开发入门

时间:2024-03-30 21:30:30

Terraform和AliCloud Terraform provider简介

Terraform是一家名叫HashCorp的洛杉矶公司推出的,HashCorp名称来源于它的创始人Mitchell Hashimoto姓氏的一部分。
Terraform alicloud provider开发入门
Terraform宣称可以“为任意的应用部署任意的基础设施资源”,这得益于丰富的Terraform provider,目前全球*云计算玩家和热门的云计算架构(OpenStack/Kubernetes/Docker)都为Terraform贡献了provider。
Terraform alicloud provider开发入门
阿里云也不例外,AliCloud Terraform provider作为支持Terraform的providers之一,目前支持ECS, Block Storage, SLB, VPC, Nat Gateway, RDS, ESS, OSS等云产品编排和部署。

下面以扩展AliCloud Terraform provider支持OTS云产品为例介绍provider的开发。

开发支持OTS资源的AliCloud Terraform provider

以下讲解基于AliCloud Terraform provider github源代码

告诉provider即将支持一种新的云产品

terraform-provider/alicloud/provider.go新增resource alicloud_ots_table以支持OTS。
Terraform alicloud provider开发入门

实现resource

terraform-provider/alicloud下面定义resource alicloud_ots_table的具体实现resourceAlicloudOtsTable。参考OTS表操作的api/sdk接口参数找出该资源的属性,具体的参数名称可以自己定义:

table_name
primary_key_1_name
primary_key_1_type
primary_key_2_name
primary_key_2_type
primary_key_3_name
primary_key_3_type
primary_key_4_name
primary_key_4_type
time_to_alive
max_version
read_cap
write_cap

另外,定义表创建的接口支持resourceAliyunOtsTableCreate,具体实现请参考[resource_alicloud_ots_table.go]()

func resourceAlicloudOtsTable() *schema.Resource {
    return &schema.Resource{
        Create: resourceAliyunOtsTableCreate,
        Importer: &schema.ResourceImporter{
            State: schema.ImportStatePassthrough,
        },

Terraform provider的依赖包改为目前开发的git repository(后续争取合入官方repository)

更改terraform-provider/main.go
Terraform alicloud provider开发入门
更改terraform-provider/glide.yaml
Terraform alicloud provider开发入门

编译Terraform AliCloud provider

参考alibaba/terraform-provider

go get ./...
glide up
sudo -E "PATH=$PATH" make all

Terraform alicloud provider开发入门

验证

创建OTS资源编排模板

请参考[]()

执行terraform init/plan/apply
Terraform alicloud provider开发入门
阿里云OTS控制可以看到创建的表资源。
Terraform alicloud provider开发入门