基于Terraform的bigquery infra搭建

本来是想边做边写的这篇文章的,结果做完以后这么久才有时间写。就做一个简单的总结吧

此次是针对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

backend.tf


自动化

makefile


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容