Terraform 和 CloudFormation 組合技的技巧

因為在 AWS 上 Multiple Account 的管理不容易,每到稽核又是一大難關,每次要抱佛腳的時候就會開始出現被現實狀況催生的東西。

 

Terraform + CloudFormation 是在 AWS 上實現 infrastructure as a code 很好用的工具,前者相容各大平台,後者是 AWS 原生服務。

 

 

在實際的應用面上,單用其中一項都會有種綁手綁腳的感覺

  • Terraform 好讀、可拆解的設定檔,缺點是支援新功能的速度不夠快、處理某些 resource 不夠彈性。
  • CloudFormation 原生 AWS,新功能幾乎立馬支援,對於 AWS 的服務幾乎沒什麼問題,缺點是不易讀。

 

這兩個工具各有優缺點,但是卻是互補關係,所以開始採用 Terraform + CloudFormation 的方式來佈署,用這樣的方式比較考驗技術力 (你兩者都要會),對於招募或教育訓練會比較難 …

 

Terraform + CloudFormation 主軸會以 Terraform 為核心,透過 Terraform 支援的 cloudformation resource aws_cloudformation_stack 來建立 cloudformation stack,所以你可以直接把 cloudformation 的 yaml 餵給 Terraform。

 

但是在編寫 Terraform + CloudFormation 的時候有幾個重點要特別注意,盡量做好每一項:

  • Terraform 盡量不寫死參數,用 tfvars 的方式去餵參數。
  • CloudFormation 把 id、value 能拋的都 Output 出來,讓 Terraform 可以去抓取 CloudFormation output 的值,例如 subnet CIDR、security group id。
  • 版控 + CI / CD
  • 做好 Test case (awspeckitchen)

 

這樣的作法 Terraform 可以讓你容易跨平台管理、CloudFormation 給你 AWS 的彈性,之後如果 GCP 發展起來要轉換也比較容易!

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱