blog post

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

##################################################################################
# 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

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

##################################################################################
# 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 來部署對應的資源到雲端架構上,就可以得到下列的結果。

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

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

  1. 打開終端機中的 .bashrc or .zshrc 檔案
  2. 在文件最下方加入下列指令
  3. 執行 source ~/.zshrc 或是 source ~/.bashrc 讓下面的 alias 快捷鍵生效
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

發佈留言

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