透過Atlantis 自動管化管理Terraform (待補權限控制)
在單人工作模式下 terraform 其實很方便,terraform plan 就可以查看現在要部署的Infra ,但若是多人呢?
Atlantis 用來解決多人協作上的問題 。
Atlantis 標準流程可以分為以下步驟
- Gitlab MR/ Github PR
- 觸發
atlantis plan-> outputterraform plan訊息 - 確認後透過評論
atlantis apply成功後,合併回主分支
以下目前都在Mac上進行測試。
準備條件:
- git repo 需有Access Token及webhook Secret
- ngrok 因為本地沒有對外IP,所以該方案暫時替代
Atlantis 安裝及啟動指令
因為是在本地運行Atlantis還沒上雲,但需要有個對外可以接收 webhook,所以就先使用ngrok的endpoint,Atlantis 預設是運行在 port 4141 。
# Mac
brew install atlantis
# 運行
atlantis server \
--atlantis-url="https://ngrokxxxxx" \
--gitlab-hostname="gitlab.xgstudio.co" \
--gitlab-user="root" \
--gitlab-token="glpat-xxxxxxxx" \
--gitlab-webhook-secret="test0408" \
--repo-allowlist="gitlab.xxxx/sre/xxx/atlantis" \
--repo-config=./repos.yaml
以下是使用的目錄結構,可以試著將環境進行分類。

以下針對 atlantis 幾個檔案必要的紀錄。
| File | In Git | Description |
|---|---|---|
atlantis.yaml |
Yes | 定義 Atlantis 監控哪些目錄(env/dev)、autoplan 觸發規則、module 變更偵測 |
repos.example.yaml |
Yes | Server-side config 範例,給團隊成員參考如何設定 Atlantis server |
repos.yaml |
No | Atlantis server 實際讀取的權限設定(allow_custom_workflows, allowed_overrides),放 server 本地 |
實際運行情況
圖1 為接入 atlantis 成功調用,不管成功或失敗都會提示訊息


圖1 左邊為失敗時回到報 右邊為成功時則提示可以atlantis apply
若確認可以直接在評論處,有權限的話可以輸入 atlantis apply 即可自動去 terraform apply。

經由上述操作,即可將權限分開以及每個操作都有記錄,確保不會黑箱操作。
而關於權限分離等後續有時間再整理。