本來是想邊做邊寫的這篇文章的辛掠,結果做完以后這么久才有時間寫鹤盒。就做一個簡單的總結吧
此次是針對bigquery infra as code国章。由于多人協(xié)作,所以需要指定backend芙盘,將tfstates文件放到了google storage bucket里面驯用。然后將代碼容器化,放到gocd pipeline上何陆。
本次目錄結構如下圖:
main.tf
terraform會執(zhí)行當前目錄下所有文件晨汹,并不是從main.tf開始執(zhí)行,會自動分析不同資源間的依賴贷盲。這里只是為了表示核心資源淘这,所以取名為main.tf
首先需要指定一個provider剥扣。credentials中是service account.一開始我是沒有指定credentials的,而是通過掛接gcloud sdk的默認配置到docker 鏡像中铝穷。但是service account可以讓每個擁有代碼庫權限額人都能執(zhí)行钠怯,這種方式也是谷歌推薦的。
接下來指定需要創(chuàng)建的資源曙聂。https://www.terraform.io/docs/providers/google/r/bigquery_dataset.html?這個里面有谷歌支持的所有資源詳細說明晦炊。
寫完以上資源,在本地就可以跑了宁脊。
容器化
dockerfile
下載gcloud sdk和 terraform并安裝断国。
entrypoint.sh
由于需要多人共享tfstates,所以需要一個大家都能訪問到的地方來存儲tfstates榆苞。這里采用bucket來存儲稳衬。所以需要配置terraform的backend。這里配置了三項內(nèi)容坐漏,分別是credentials薄疚,bucket,prefix 赊琳,具體配置可以在文檔中查街夭。
這里就踩到了一個坑。在執(zhí)行的過程中躏筏,會報錯板丽,原因是因為bucket需要指定template。所以這里還需要一個backend.tf