基于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


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

推荐阅读更多精彩内容

  • 1. 前言 目前IT设备对于大多数企业公司来说是必不可少的基础设施,由于云计算的按需付费,便捷配置计算资源(资源包...
    liewuweifeng阅读 12,990评论 0 7
  • 感谢光顾,简书停更,迁移至sengmentfault: https://segmentfault.com/a/11...
    hanyouqing阅读 8,653评论 0 2
  • 前言 最近在研究terraform,采了一圈坑,记录一下 什么是terraform terraform 通过代码配...
    LinkinStar阅读 6,083评论 2 1
  • 我爸妈离婚那年我上四年级,我妹刚上幼儿园。因为我爸出轨了,为了他娇滴滴的女朋友,他迫不及待地把我们娘仨扫地出门。我...
    清风朗月1105阅读 14,936评论 132 435
  • 很多年前的我,不爱吃豆芽, 每次妈妈路过豆制品的小摊,只是买块豆腐,卖菜的大妈热情地介绍自然生根的豆芽,妈妈总是摇...
    小西不见阅读 2,701评论 0 0