要讓 Terraform 能有複用性,我們需要加入一些參數化變數來增加彈性,也就是為 module 的 parameter,而且在 root module 中定義好的 variable,可以根據需求來覆蓋。 Terraform Input Variables 的功能,讓我們可以宣告變數,並有幾種方式可以傳入自訂義 variable values:

  • command line
  • .tfvars
  • Environment 讀取

以下會簡單介紹這些方式和優缺點。

Continue reading

templatefile 是 Terraform 的一個內置函數,可讓 Terraform 在運行時,根據變量動態生成文件內容 。 templatefile 函數的基本用法是:

  • 定義一個模板文件,其中包含要插入變量的佔位符。
  • 在 Terraform code 中,您可以使用 templatefile 函數來讀取模板文件,並提供要插入的變量。

最後 Terraform 會動態生成文件內容,並將其輸出。

Continue reading

terraform archive 是一個 HashiCorp 公司提供的一個 Provider,可以讓使用者在 Terraform 中,將指定的目錄或檔案打包(例如 zip )。

雲端上運行的無伺服器計算服務非常熱門,著名的如 AWS Lambda 、 Azure Functions、GCP Cloud Functions,也常使用 terraform 工具來進行部屬。這時再使用 terraform archive ,方便地把例如 python code 打包成 zip,簡便地部署到服務上。

Continue reading

在 Cloud Firestore 中,存儲單位是 document 。document 是一個 lightweight record ,可包含 data 欄位 (稱: fields),也可以嵌套另一個 collection。 因為 terraform 的 google_firestore_document,要求 fields 的 format 要是 json string ,比想像中的難寫,在這邊簡單紀錄一下範例。

Continue reading

Terraform Move

隨著系統的擴充, Terraform 配置也會變得越來越複雜,這時可能會需要做一些 Refactor,例如 :

  • 將某些 terraform resource 移動到其他 module
  • change resource ID

這時候用 terraform plan 檢查一下,會發現 terraform 打算把原本的 resource 移除,然後重新建立一個新的 resource。但 resource 中間被刪掉,之後再造回來是會影響服務的。我們必須讓 Terraform 知道我只是重新命名,這就是 Terraform move 想做的事情。

Continue reading

Terraform 實用技巧

最近很常寫 Terraform ,知道一些 terraform cli 指令可以幫助自己寫的更好,也在學習 Terraform 的過程中,把覺得值得記錄的一些注意事項 & 小技巧留在這裡。

Continue reading

Author's picture

李昀陽 YunYang Lee

Welcome to my Tech Note. You can read some of the chapters below.

Software Engineer

Taiwan