這個程式碼倉庫包含了使用 Terraform 部署 YouBike 資料管線專案所需的全部 Google Cloud Platform (GCP) 基礎設施。
此倉庫的目標是實現基礎設施的自動化部署與管理,確保專案環境的可重複性、一致性與可擴展性。
本專案透過 Terraform 部署以下核心 GCP 資源:
-
Google Compute Engine (GCE) VM 實例:一台 Ubuntu 虛擬機,將用作 Airflow 部署的主機。
-
服務帳號 (Service Account):專門為 Airflow 虛擬機建立,並賦予其必要的權限,以便存取 BigQuery、Cloud Storage 等 GCP 服務。
-
防火牆規則 (Firewall Rules):設定網路規則,僅允許特定 IP 位址對 Airflow VM 進行 SSH 連線 (Port 22),並開放 Airflow Web UI 介面 (Port 8080)。
-
靜態 IP 位址 (Static IP Address):為虛擬機分配一個固定的公用 IP,以確保連線穩定性。
在開始部署之前,請確認你已完成以下準備:
-
安裝 Terraform:確保你的本機環境已安裝 Terraform。
-
安裝 Google Cloud SDK:並使用
gcloud auth login
登入你的 GCP 帳號。 -
建立服務帳號金鑰:為你的專案建立一個服務帳號金鑰,並將其
.json
檔案儲存在安全位置。 -
設定環境變數:在你的終端機中,設定
GOOGLE_APPLICATION_CREDENTIALS
環境變數,指向你的金鑰檔案路徑。
- 複製程式碼倉庫:
git clone https://github.com/pohengchou/terraform cd terraform
- 配置變數:
-
編輯
dev.tfvars
檔案,將gcp_project_id
和gcp_service_account
替換為你的實際資訊。 -
如果需要,你也可以將
allowed_ip
替換為你的靜態 IP 位址以提高安全性。
- 執行 Terraform:
-
初始化 Terraform 專案:
terraform init
-
預覽將要部署的資源,確認無誤:
terraform plan
-
執行部署:
terraform apply
在提示時輸入 yes
以確認部署。
當 terraform apply
成功執行後,它會自動輸出 Airflow VM 的公用 IP 位址。
terraform output airflow_vm_public_ip
-
為了確保安全,請不要將
dev.tfvars
或任何包含敏感資訊的檔案提交到 Git 倉庫。本專案已包含.gitignore
檔案來協助你管理這些檔案。 -
如果你需要刪除所有部署的資源,可以使用
terraform destroy
指令。