Terraform和AliCloud Terraform provider简介
Terraform是一家名叫HashCorp的洛杉矶公司推出的,HashCorp名称来源于它的创始人Mitchell Hashimoto姓氏的一部分。
Terraform宣称可以“为任意的应用部署任意的基础设施资源”,这得益于丰富的Terraform provider,目前全球顶级云计算玩家和热门的云计算架构(OpenStack/Kubernetes/Docker)都为Terraform贡献了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。
实现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-provider/glide.yaml
:
编译Terraform AliCloud provider
go get ./...
glide up
sudo -E "PATH=$PATH" make all
验证
创建OTS资源编排模板
请参考[]()
执行terraform init/plan/apply
阿里云OTS控制可以看到创建的表资源。