本来是想边做边写的这篇文章的,结果做完以后这么久才有时间写。就做一个简单的总结吧
此次是针对bigquery infra as code。由于多人协作,所以需要指定backend,将tfstates文件放到了google storage bucket里面。然后将代码容器化,放到gocd pipeline上。
本次目录结构如下图:
main.tf
terraform会执行当前目录下所有文件,并不是从main.tf开始执行,会自动分析不同资源间的依赖。这里只是为了表示核心资源,所以取名为main.tf
首先需要指定一个provider。credentials中是service account.一开始我是没有指定credentials的,而是通过挂接gcloud sdk的默认配置到docker 镜像中。但是service account可以让每个拥有代码库权限额人都能执行,这种方式也是谷歌推荐的。
接下来指定需要创建的资源。https://www.terraform.io/docs/providers/google/r/bigquery_dataset.html 这个里面有谷歌支持的所有资源详细说明。
写完以上资源,在本地就可以跑了。
容器化
dockerfile
下载gcloud sdk和 terraform并安装。
entrypoint.sh
由于需要多人共享tfstates,所以需要一个大家都能访问到的地方来存储tfstates。这里采用bucket来存储。所以需要配置terraform的backend。这里配置了三项内容,分别是credentials,bucket,prefix ,具体配置可以在文档中查。
这里就踩到了一个坑。在执行的过程中,会报错,原因是因为bucket需要指定template。所以这里还需要一个backend.tf