blog post

Day 21 — Terraform/GCP實戰:使用 Terraform 創建 GCP 運算資源服務

使用 Terraform 創建 GCP 虛擬機器,實現運算資源的管理。

Day 21 — Terraform/GCP實戰:使用 Terraform 創建 GCP 運算資源服務

Day 21 — Terraform/GCP實戰:使用 Terraform 創建 GCP 運算資源服務


文章同步分享到
blog – https://devops-with-alex.com/day-21-terraform-gcp-programming-computer/
ithome – https://ithelp.ithome.com.tw/articles/10335522
Medium – https://medium.com/p/740fe563c9c

1. GCP 運算資源服務主要功能、用途與使用情境

GCP 運算資源服務的主要功能、用途與使用情境,可以參考先前的章節來做了解,會更幫助我們了解對應用terraform產生的雲端資源。

Terraform/GCP實戰:使用 GCP Console 創建 GCP 運算資源服務

GCP 運算資源服務

2. GCP 運算資源服務 — 使用Terraform創建虛擬機器 (VM)

在這個章節中,我們將深入探討如何使用Terraform在Google Cloud Platform上創建虛擬機器。我們將依次進行以下步驟:

1. 創建Debian 10的虛擬機器:我們將通過Terraform代碼來定義一個Debian 10虛擬機器的配置,包括所需的運算資源、映像、磁碟等。

2. 使用預設的網路,並使用日本的網段 asia-northeast1-a:我們將設定虛擬機器使用GCP預設的網路設置,並指定虛擬機器的位置為日本的 asia-northeast1-a 區域。

3. 嘗試ssh連線到這台虛擬機器:我們將展示如何使用SSH連線到創建的虛擬機器,以驗證虛擬機器已成功創建並運行

4. Terraform VM 連結:可以到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"
}
}
}

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 變數提供)。
0-provider.tf

1-variables.tf

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

variable "instance_name" {
type = string
default = "vm-tf-ch4-4-3"
}

variable "location" {
type = string
default = "asia-northeast1"
}

variable "zone" {
type = string
default = "asia-northeast1-a"
}

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

  • variable "GCP_PROJECT":這是 GCP 專案 ID 的變數,它描述了 GCP 專案的 ID。它的預設值是 “terraform101-384507″,但可以在使用時指定不同的值。
  • variable "instance_name":這是用於定義 Google Cloud VM 名稱的變數。
  • variable "location":這是定義網路服務所在位置(地區)的變數。
  • variable "zone":這是定義網路服務所在區域的變數。
1-variables.tf

2-main.tf

##################################################################################
# RESOURCE
##################################################################################
resource "google_compute_instance" "example" {
name = var.instance_name
zone = var.zone
machine_type = "e2-medium"
boot_disk {
initialize_params {
image = "debian-cloud/debian-10"
}
}
network_interface {
network = "default"
access_config {
}
}
}

output "instance_ip" {
value = google_compute_instance.example.network_interface[0].access_config[0].nat_ip
}

上述的Terraform代碼片段是用於創建Google Cloud Platform (GCP) 上的一個虛擬機器(VM)。讓我們逐一解釋這段代碼的意義:

  1. resource "google_compute_instance" "example": 這個部分定義了一個名為 “example” 的 Terraform 資源,類型為 google_compute_instance,表示我們要創建一個 GCP VM。
  2. name = var.instance_name: 這裡使用了一個 Terraform 變數 var.instance_name 作為 VM 的名稱。這個變數將在其他地方定義並提供值。
  3. zone = var.zone: 這個部分指定了 VM 將位於的 GCP 區域。類似地,這裡使用了一個名為 var.zone 的 Terraform 變數。
  4. machine_type = "e2-medium": 這個設置指定了 VM 的運算資源配置,即虛擬機器的機型。在這個例子中,我們選擇了 “e2-medium” 機型,這代表中等規模的虛擬機器。
  5. boot_diskinitialize_params: 這部分定義了 VM 的啟動磁碟配置,包括使用的映像。在這個例子中,我們選擇使用 “debian-cloud/debian-10” 映像,即 Debian 10 作業系統。
  6. network_interfaceaccess_config: 這個部分指定了 VM 的網路配置,包括連接到的網路和存取配置。在這裡,我們將 VM 連接到預設網路。

接下來的部分是代碼的輸出部分,用於將 VM 的 IP 地址輸出為 Terraform 變數。具體來說:

  1. output "instance_ip": 這部分定義了一個輸出,名稱為 “instance_ip”,用於將 VM 的 IP 地址暴露給其他 Terraform 設定或模組。
  2. value = google_compute_instance.example.network_interface[0].access_config[0].nat_ip: 這裡指定了要輸出的值,即 google_compute_instance.example 這個 VM 資源的網路接口中的 NAT IP 地址。

總之,這段代碼描述了如何使用 Terraform 在 GCP 上創建一個虛擬機器,並定義了該 VM 的名稱、區域、運算資源配置、映像、網路連接等。同時,它也將該 VM 的 IP 地址輸出為 Terraform 變數,以便於後續的使用。

2-main.tf

執行terraform部署

到專案目錄執行初始化計畫

terraform init 
# or
tf init

確認部署計畫內容


terraform plan -out plan.out
# or
tfp
觀看部署計畫 terraform plan -out plan.out

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

terraform apply -auto-approve
# or
tfdp

部署雲端架構 terraform apply -auto-approve
GCE 虛擬機器VM

ssh連線到這台虛擬機器

創建完畢,並看到虛擬機器後,可以點選ssh來進入機器內部。

ssh連線到這台虛擬機器
ssh 連線確認

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"

3. 總結 Summary

Terraform 雲端資源實作:介紹如何使用Terraform在Google Cloud Platform(GCP)上建立虛擬機器(VM)的步驟。包括Terraform程式碼的配置、變數定義和VM創建與Terraform執行命令的示範。

4. 相關連結

  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雲端自動化架構課程

發佈留言

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