要覆盖 Terraform 资源参数的 .go 代码,可以使用 go get 命令将资源的代码复制到本地,进行修改并重新编译。具体步骤如下:
1)使用 go get 命令将资源复制到本地:
$ go get github.com/terraform-providers/terraform-provider-aws/aws
2)进入资源代码所在目录:
$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-aws/aws/
3)修改需要覆盖的参数的代码:
resourceType := d.Get("type").(string) // 修改此处代码
resourceId := d.Id()// 查询资源详情
details, err := svc.DescribeResource(&resourceType, &resourceId)
4)编译修改后的代码:
$ make custom
5)运行 Terraform 配置文件时,指定修改后的资源代码路径:
provider "aws" {version = "3.5.0"access_key = "ACCESS_KEY"secret_key = "SECRET_KEY"region = "us-east-1"endpoints {elastictape = "http://localhost:8000"}// 指定修改后的资源代码路径terraform_resource_aws_elastictape_endpoint = "$GOPATH/src/github.com/terraform-providers/terraform-provider-aws/aws/elastic-tape-endpoint.custom"
}
这样就完成了资源参数 .go 代码的覆盖和修改。