Day 8— Terraform基礎 — Provider version 的概念與使用
10 min readSep 15, 2023
文章目標:說明 Terraform Provider 版本的重要性,以及如何正確使用各種 Provider。
- Day1 — Introduction — 現代 IT 架構問題與解決方案
- Day 2 — Introduction — Terraform 與基礎架構即代碼 (IAC) 的解決方案
- Day 3 — Terraform 基礎 — 申請 GCP 免費帳號
- Day 4 — Terraform基礎 — Terraform 簡介與安裝
- Day 5 — Terraform基礎 — 掌握 Terraform 元件
- Day 6 — Terraform基礎 — Terraform 工作流程
- Day 7 — Terraform基礎 — 效率提升:使用 bash alias
- Day 8 — Terraform基礎 — Provider version 的概念與使用
- Day 9 — Terraform基礎 — 資源 (Resources) 的概念與使用
- Day 10 — Terraform基礎 — 配置器 Provisioners 的概念與使用
- Day 11 — Terraform基礎 — 變數 (Variables) 與輸出 (Outputs)
- Day 12 — Terraform基礎 — 變數 (Variables) 種類與使用順序
- Day 13 — Terraform基礎 — 資料來源 Data Sources 的概念與使用
- Day 14 — Terraform基礎 — State 的概念與使用
- Day 15 — Terraform基礎 — Backend 遠端狀態後台的概念與使用
- Day 16 — Terraform/GCP基礎 — GCP服務帳號 (Service Account) 與使用者 (User) 的差異
- Day 17 — Terraform/GCP基礎 — 設定 GCP 服務帳號 Service Account
- Day 18 — Terraform/GCP基礎 — 連結 Terraform 與 GCP:使用者帳號與密碼
- Day 19 — Terraform/GCP基礎 — 建議的 Terraform 開發最佳實踐 best practices
- Day 20 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 運算資源服務
- Day 21 — Terraform/GCP實戰:使用 Terraform 創建 GCP 運算資源服務
- Day 22 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 無伺服器服務Cloud Function
- Day 23 — Terraform/GCP實戰:使用 Terraform 創建 GCP 無伺服器服務Cloud Function
- Day 24 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 無伺服器服務 (Cloud Run)
- Day 25 — Terraform/GCP實戰:使用 Terraform 創建 GCP 無伺服器服務 (Cloud Run)
- Day 26 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 運算服務 Kubernetes GKE
- Day 27 — Terraform/GCP實戰 :使用 Terraform 創建 GCP 運算服務 Kubernetes GKE
- Day 28 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 資料庫服務 Cloud Sql (PostgreSQL)
- Day 29 — Terraform/GCP實戰:使用 Terraform 創建 GCP 資料庫服務 Cloud Sql (PostgreSQL)
- Day 30 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 資料庫服務 Cloud MemoryStore — Redis
- Day 31 — Terraform/GCP實戰:使用 Terraform 創建 GCP 資料庫服務Cloud MemoryStore — Redis
Provider version 的概念與使用
Providers(供應商)
Providers(供應商):Terraform 支援各種不同的基礎架構供應商,如 Amazon Web Services、Microsoft Azure、Google Cloud Platform 等等。
Version (版本)
- 確保 Terraform 與雲服務供應商 API 的兼容性:使用者可以在定義 Terraform 的配置文件時,指定所需的 provider 與版本。
- 確保指定 provider 的版本:最佳實做方式,確保 Terraform 代碼在與雲服務供應商進行交互時能夠正確地工作,同時也可以避免在升級 provider 時造成的不相容問題。
- 指定版本的規則:
- 嚴格等於(exact match):指定一個確切的版本號,例如 “3.14.0”
。
- 最小版本(minimum version):指定一個最小的版本號,例如 “>= 3.0.0”
- 指定版本範圍(version range):可以使用比較符號(如 >、>=、<、<=)來指定版本範圍,例如 “>= 3.0.0, < 4.0.0”
。
- 通配符(wildcard):使用 * 作為通配符,例如 “3.*”
。
- 任何版本(any version):可以使用 “any” 來指定使用任何版本,例如 “any”
。
Provider version 的詳細規則
指定版本的規則
- 嚴格等於(exact match): 在這個例子中,Terraform 要求使用 Google 提供者的版本必須精確為 “3.19.0”。如果提供者版本不是 “3.19.0”,則 Terraform 不會接受它。
- 最小版本(minimum version): 這個規則指定 Google 提供者的版本必須是 “0.11.0” 或更高版本。你可以使用這個規則,確保你的 Terraform 配置至少使用了指定的最低版本,以確保向後兼容性。
- 指定版本範圍(version range): 在這個例子中,Terraform 規定 Google 提供者的版本必須大於或等於 “3.5.0”,但小於 “4.0.0”。這允許你在指定的版本範圍內使用提供者,通常用於確保功能的穩定性,但同時允許小型升級。
- 通配符(wildcard): 使用 “3.*” 這樣的版本號,Terraform 允許使用 Google 提供者的任何 “3.x.x” 版本,其中 “x” 可以是任何數字。這允許你使用指定主版本的所有次版本,這在保持功能兼容性的同時提供了彈性。
- 任何版本(any version): 如果你設置提供者版本為 “any”,則 Terraform 將接受任何版本的 Google 提供者。這種情況下,Terraform 不會強制要求特定版本,而是使用最新可用的版本,可能會導致功能或相容性的變化。
# 嚴格等於(exact match)
provider "google" {
version = "3.19.0"
region = "us-west-2"
}
# 最小版本(minimum version)
provider "google" {
version = ">= 0.11.0"
region = "us-west-2"
}
# 指定版本範圍(version range)
provider "google" {
version = ">= 3.5.0, < 4.0.0"
region = "us-west-2"
}
# 通配符(wildcard)
provider "google" {
version = "3.*"
region = "us-west-2"
}
# 任何版本(any version)
provider "google" {
version = "any"
region = "us-west-2"
}
推薦方式 Provider: GCP / Version: >= 4.40.0
- Terraform 版本要求:
required_version = ">=1.0"
,這表示你的 Terraform 環境必須是 1.0 版本或更高版本。這確保你使用了較新的 Terraform 版本,以確保功能和安全性。 - Google Provider 版本規則:
required_providers { google = { source = "hashicorp/google" version = ">= 4.40.0" } }
,這表示你的 Terraform 配置需要使用 Google 提供者的版本 4.40.0 或更高版本。這可以確保你的 Terraform 配置在使用 Google Cloud 服務時擁有所需的功能和相容性。
# 推薦方式 Provider: GCP / Version: >= 4.40.0
terraform {
required_version = ">=1.0"
required_providers {
google = {
source = "hashicorp/google"
version = ">= 4.40.0"
}
}
}
總結 Summary
- Terraform 提供者(Providers):是用於與不同基礎架構供應商(如 AWS、Azure、GCP 等)互動的關鍵組件。
- Terraform 指定所需的提供者版本(version):以確保 Terraform 配置在與雲服務供應商進行交互時能夠正確地工作,同時避免升級提供者時可能導致的不相容性問題。
- Terraform 指定提供者版本的規則:
- 嚴格等於(exact match):精確指定一個版本號。
- 最小版本(minimum version):指定最低的版本號。
- 指定版本範圍(version range):使用比較符號指定版本範圍。
- 通配符(wildcard):使用通配符來匹配多個次版本。
- 任何版本(any version):接受任何版本。 - Terraform 最佳實踐:確保 Terraform 配置使用特定版本的提供者,以確保功能的穩定性和相容性。
相關連結
- Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code — https://github.com/qwedsazxc78/Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code
- Terraform-project-best-practice — https://github.com/qwedsazxc78/terraform-project-best-practice
- 歡迎訂閱我的udemy課程:Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程