blog post

Day 8— Terraform基礎 — Provider version 的概念與使用

文章目標:說明 Terraform Provider 版本的重要性,以及如何正確使用各種 Provider。

Day 8- Terraform基礎 — Provider version 的概念與使用
Day 8 — Terraform基礎 — Provider version 的概念與使用

文章同步分享到
blog – https://devops-with-alex.com/day-8-terraform-provider-version/
ithome – https://ithelp.ithome.com.tw/articles/10325639
Medium – https://medium.com/p/2e42768c322

Provider version 的概念與使用

Providers(供應商)

Providers(供應商):Terraform 支援各種不同的基礎架構供應商,如 Amazon Web Services、Microsoft Azure、Google Cloud Platform 等等。

Terraform Providers(供應商)

Version (版本)

  1. 確保 Terraform 與雲服務供應商 API 的兼容性:使用者可以在定義 Terraform 的配置文件時,指定所需的 provider 與版本。
  2. 確保指定 provider 的版本最佳實做方式,確保 Terraform 代碼在與雲服務供應商進行交互時能夠正確地工作,同時也可以避免在升級 provider 時造成的不相容問題。
  3. 指定版本的規則:
    – 嚴格等於(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 的詳細規則

指定版本的規則

指定版本的規則 1/2
指定版本的規則 2/2
  1. 嚴格等於(exact match): 在這個例子中,Terraform 要求使用 Google 提供者的版本必須精確為 “3.19.0”。如果提供者版本不是 “3.19.0”,則 Terraform 不會接受它。
  2. 最小版本(minimum version): 這個規則指定 Google 提供者的版本必須是 “0.11.0” 或更高版本。你可以使用這個規則,確保你的 Terraform 配置至少使用了指定的最低版本,以確保向後兼容性。
  3. 指定版本範圍(version range): 在這個例子中,Terraform 規定 Google 提供者的版本必須大於或等於 “3.5.0”,但小於 “4.0.0”。這允許你在指定的版本範圍內使用提供者,通常用於確保功能的穩定性,但同時允許小型升級。
  4. 通配符(wildcard): 使用 “3.*” 這樣的版本號,Terraform 允許使用 Google 提供者的任何 “3.x.x” 版本,其中 “x” 可以是任何數字。這允許你使用指定主版本的所有次版本,這在保持功能兼容性的同時提供了彈性。
  5. 任何版本(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

  1. Terraform 版本要求required_version = ">=1.0" ,這表示你的 Terraform 環境必須是 1.0 版本或更高版本。這確保你使用了較新的 Terraform 版本,以確保功能和安全性。
  2. 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

  1. Terraform 提供者(Providers):是用於與不同基礎架構供應商(如 AWS、Azure、GCP 等)互動的關鍵組件。
  2. Terraform 指定所需的提供者版本(version):以確保 Terraform 配置在與雲服務供應商進行交互時能夠正確地工作,同時避免升級提供者時可能導致的不相容性問題。
  3. Terraform 指定提供者版本的規則:
    – 嚴格等於(exact match):精確指定一個版本號。
    – 最小版本(minimum version):指定最低的版本號。
    – 指定版本範圍(version range):使用比較符號指定版本範圍。
    – 通配符(wildcard):使用通配符來匹配多個次版本。
    – 任何版本(any version):接受任何版本。
  4. Terraform 最佳實踐:確保 Terraform 配置使用特定版本的提供者,以確保功能的穩定性和相容性。

相關連結

  1. 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
  2. Terraform-project-best-practice — https://github.com/qwedsazxc78/terraform-project-best-practice
  3. 歡迎訂閱我的udemy課程:Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *