iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
DevOps

Terraform 從零開始 - 實戰Lab打造GCP雲端自動化架構系列 第 21

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

  • 分享至 

  • xImage
  •  

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

文章同步分享到

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_disk 和 initialize_params: 這部分定義了 VM 的啟動磁碟配置,包括使用的映像。在這個例子中,我們選擇使用 "debian-cloud/debian-10" 映像,即 Debian 10 作業系統。

  6. network_interface 和 access_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-Codehttps://github.com/qwedsazxc78/Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code

  2. Terraform-project-best-practicehttps://github.com/qwedsazxc78/terraform-project-best-practice

  3. 歡迎訂閱我的udemy課程:Terraform 從零開始 - 10+實戰Lab打造GCP雲端自動化架構課程 - https://devops-with-alex.com/go/terraform


上一篇
Day 20 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 運算資源服務
下一篇
Day 22 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 無伺服器服務Cloud Function
系列文
Terraform 從零開始 - 實戰Lab打造GCP雲端自動化架構31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言