Cloud-F1AI方程式學院

Alex 相談室 / Terraform IaC

Terraform 從零開始 (1) — 存儲服務 — 使用 Terraform 創建 Google Cloud Storage

GCS存儲服務 — 使用 Terraform 創建 Google Cloud Storage
GCS存儲服務 — 使用 Terraform 創建 Google Cloud Storage

*訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程

系列文章快速連結#

1. Google Cloud Storage 的主要功能和用途#

Google Cloud Storage(GCS)是 Google Cloud Platform(GCP)提供的對象儲存服務,具有以下主要功能和用途:

  1. 靈活的儲存類型:GCS 提供多種儲存類型,包括標準、低頻、近緣等。這些不同的類型可以根據您的需求來選擇最適合的儲存方式,從而實現成本效益的最大化。
  2. 高可靠性:GCS 將數據在多個物理位置進行冗余儲存,這意味著即使發生硬件故障或其他意外情況,數據仍然可以保持安全。這種冗余設計提高了數據的可用性和可靠性,確保數據的安全性和完整性。
  3. 高可擴展性:GCS 能夠應對數據快速擴張的需求,這對於不斷增長的企業數據儲存需求非常重要。無論您的數據量有多大,GCS 都可以提供可擴展的儲存解決方案。
  4. 安全性和可管理性:GCS 提供了強大的訪問權限控制和數據加密功能。這意味著您可以對數據進行細粒度的權限控制,確保只有授權的用戶能夠訪問數據。同時,GCS 還提供了各種管理工具,如 Cloud Console 和 gsutil 工具,使您能夠輕鬆地管理和操作數據。

2. Google Cloud Storage 的使用情境#

GCS 在多個領域都有廣泛的應用,以下是一些常見的使用情境:

  1. 數據儲存與備份:GCS 可以作為企業的數據儲存和備份平台。透過 GCS 的高可靠性和冗余儲存,您可以確保數據的安全性,同時能夠快速恢復數據,應對意外故障或數據丟失的情況。
  2. 影音內容儲存:對於媒體公司、網路直播平台等行業,GCS 是一個理想的影音內容儲存庫。它支持多種媒體格式,包括高清4k、超高清8k等,確保您的影音內容能夠以最佳品質保存和傳輸。
  3. 大數據分析:GCS 可以作為大數據分析的儲存基礎,用於存儲海量數據。數據科學家可以通過 GCS 對數據進行存取、管理和分析,從而獲取有價值的洞察。
  4. 物聯網數據收集與分析:對於物聯網應用,GCS 可以用於收集和儲存 IoT 終端設備產生的數據。這樣的數據可以用於實時監控、資料分析,以及進一步的業務優化。

3. GCP 存儲服務 — 使用 Terraform 創建 GCS#

現在,讓我們來看看如何使用 Terraform 在 GCP 上創建 Google Cloud Storage,我們會有下面四個任務,也可以參考對應的程式碼連結:

  1. 創建 GCS 服務:創建一個新的 GCS 存儲桶。
  2. 使用亞洲多區域的備援:確保數據在多個地理位置進行冗余儲存,以實現高可用性。
  3. 使用非公開的資料存取方式:確保只有授權的用戶能夠訪問數據。
  4. 建立資料的生命週期:定義 GCS 存儲桶的生命週期規則,設置數據在 90 天後自動刪除。
  5. Terraform GCS 連結:可以到github參考對應的Terraform程式碼。

首先創建三個檔案,分別是 0-provider.tf, 1-variables.tf, 2-main.tf

0-provider.tf

code
##################################################################################
# CONFIGURATION
##################################################################################
terraform {
  required_version = ">=1.0"
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = ">= 4.40.0"
    }
  }
}

##################################################################################
# PROVIDERS
##################################################################################
provider "google" {
  project = var.GCP_PROJECT
  # region  = var.GCP_REGION
  # zone        = var.zone
}

這個檔案主要用於配置 Terraform 的提供者(provider),以確保 Terraform 可以正確地與 Google Cloud Platform(GCP)進行交互。

  • terraform :這個區塊設定了 Terraform 的版本要求,確保使用的版本符合最低要求大於4.40.0版本。同時,它也定義了所需的提供者和版本。
  • provider "google" :這個區塊指定了要使用的 GCP 提供,指定了 GCP 專案 ID(由 var.GCP_PROJECT 變數提供)。

1-variables.tf

code
variable "GCP_PROJECT" {
  description = "GCP Project ID"
  type        = string
  default     = "terraform101-384507"
}

variable "gcs_name" {
  type    = string
  default = "gcs-tf-ch4-2-4"
}

variable "location" {
  type    = string
  default = "ASIA"
}

這個檔案用於定義 Terraform 使用的變數,以實現更高度的可配置性和重用性。

  • variable "GCP_PROJECT":這是 GCP 專案 ID 的變數,它描述了 GCP 專案的 ID。它的預設值是 “terraform101-384507″,但可以在使用時指定不同的值。
  • variable "gcs_name":這是用於定義 Google Cloud Storage 存儲桶名稱的變數。
  • variable "location":這是定義存儲桶所在位置(地區)的變數。

2-main.tf

code
##################################################################################
# RESOURCE
##################################################################################
resource "google_storage_bucket" "my-bucket" {
  name          = var.gcs_name
  location      = var.location
  storage_class = "MULTI_REGIONAL"
  force_destroy = true

  public_access_prevention = "enforced"

  lifecycle_rule {
    condition {
      age = 90
    }
    action {
      type = "Delete"
    }
  }
}

這個檔案是主要的 Terraform 代碼,用於創建 Google Cloud Storage 存儲桶。

  • resource "google_storage_bucket" "my-bucket":這個區塊創建了一個 GCS 存儲桶資源,名稱為 “my-bucket”(由 google_storage_bucket.my-bucket 引用)。它使用了在 1-variables.tf 中定義的變數,如存儲桶的名稱、位置等。
  • name:指定存儲桶的名稱。
  • location:指定存儲桶的地區(由變數 var.location 提供)。
  • storage_class:指定存儲桶的儲存類型,這裡是 “MULTI_REGIONAL”。
  • force_destroy:當刪除存儲桶時,強制銷毀存儲桶中的所有對象。
  • public_access_prevention:設定公共訪問預防的級別為 “enforced”,確保存儲桶不會被意外訪問。
  • lifecycle_rule:這個區塊定義了存儲桶的生命周期規則,指定當對象年齡超過 90 天時,自動刪除對象。

這些 Terraform 程式碼檔案配置,可以讓我們通過 Terraform 創建一個名為 “my-bucket” 的 Google Cloud Storage 存儲桶,並在其中設置特定的屬性和生命周期規則。

最後執行terraform apply -auto-approve來部署對應的資源到雲端架構上,就可以得到下列的結果。

code
terraform apply -auto-approve
GCP 存儲服務 GCS
GCP 存儲服務 GCS

Terraform tip:可以利用下列的 Terraform tip,來增進部署效率。

  1. 打開終端機中的 .bashrc or .zshrc 檔案
  2. 在文件最下方加入下列指令
  3. 執行 source ~/.zshrc 或是 source ~/.bashrc 讓下面的 alias 快捷鍵生效
code
alias tf="terraform"
alias tfv="terraform validate"
alias tfdp="terraform apply -auto-approve plan.out"
alias tfd="terraform apply -auto-approve"
alias tfr="terraform destroy -auto-approve"
alias tfp="terraform plan -out plan.out"

4. 課程連結#

如果您覺得這篇文章對您有幫助,我誠摯地邀請您透過以下連結訂閱我的 Udemy 課程,進一步深入學習 Terraform 和 GCP 的知識:

訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程

訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程
https://devops-with-alex.com/go/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. Google Cloud Storage 介紹 — GCS

回到 Alex 相談室