文章目標:說明 Terraform Provider 版本的重要性,以及如何正確使用各種 Provider。
Providers(供應商):Terraform 支援各種不同的基礎架構供應商,如 Amazon Web Services、Microsoft Azure、Google Cloud Platform 等等。
確保 Terraform 與雲服務供應商 API 的兼容性:使用者可以在定義 Terraform 的配置文件時,指定所需的 provider 與版本。
確保指定 provider 的版本**:最佳實做方式**,確保 Terraform 代碼在與雲服務供應商進行交互時能夠正確地工作,同時也可以避免在升級 provider 時造成的不相容問題。
指定版本的規則:
嚴格等於(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"
}
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"
}
}
}
Terraform 提供者(Providers):是用於與不同基礎架構供應商(如 AWS、Azure、GCP 等)互動的關鍵組件。
Terraform 指定所需的提供者版本(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雲端自動化架構課程 - https://devops-with-alex.com/go/terraform