![GCE 運算資源服務-使用Terraform創建虛擬機器-VM](https://cdn-images-1.medium.com/max/800/1*xRQR5sc6EwqmS3y2qsfDpg.png)
1. Google 運算資源服務VM的主要功能和用途
虛擬機器 (Virtual Machines,VMs) 是一種強大的運算資源,在Google Cloud Platform (GCP) 上使用Terraform創建的VM能夠模擬完整的計算機系統,並提供豐富的功能和用途。以下是一些主要的功能和用途:
- 運行應用程序: 虛擬機器是運行各種應用程序的理想場所。從基本的Web應用程序到複雜的數據庫伺服器,VMs提供了一個可靠的環境來運行應用程序。這使得您可以輕鬆管理應用程序的運行環境,並根據需求調整運算資源的配置。
- 開發和測試: VMs 提供了一個理想的環境來進行軟體開發和測試。您可以在虛擬機器上安裝開發工具、編譯器和依賴項,並在其中進行代碼編寫和測試。這種隔離的環境確保您的開發和測試不會影響主要的運行環境。
- 數據處理和分析: 虛擬機器在數據處理和分析方面也發揮著關鍵作用。您可以在VM上運行大數據處理框架,如Hadoop和Spark,以處理海量數據並進行複雜的分析操作。同時,VMs還能支援機器學習、深度學習等計算密集型任務,為您提供強大的運算能力。
- 網站運營:對於網站運營來說,虛擬機器提供了基礎架構和服務的完整解決方案。您可以在VM上運行Web應用程序、資料庫和其他相關服務,為網站提供穩定的運行環境。舉例來說,您可以使用GCP虛擬機器建立一個網上電商平台,並在VM上運行該平台的網站和數據庫。
2. Google 運算資源服務VM的使用情境
Google Cloud Platform 的虛擬機器可在多種場景下使用,以下是一些常見的使用情境:
- 網站運營:虛擬機器可用於搭建和運行網站。無論是個人部落格、企業網站還是電子商務平台,VMs都能提供穩定的運行環境,並支援各種Web應用程序和資料庫。
- 軟體開發:虛擬機器是軟體開發和測試的理想選擇。開發人員可以在VM上設定開發環境,並進行代碼編寫、測試和調試。VM的隔離性確保了開發環境的穩定性和安全性。
- 數據處理和分析:虛擬機器在處理大數據和進行複雜分析時具有優勢。您可以在VM上運行大數據框架,如Hadoop、Spark和Flink,以處理和分析海量數據。
- 機器學習和深度學習:VMs提供了計算資源來支援機器學習和深度學習項目。您可以在VM上訓練模型、進行實驗,甚至構建自己的人工智能應用程序。
3. 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
變數提供)。
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"
:這是定義網路服務所在區域的變數。
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)。讓我們逐一解釋這段代碼的意義:
resource "google_compute_instance" "example"
: 這個部分定義了一個名為 “example” 的 Terraform 資源,類型為google_compute_instance
,表示我們要創建一個 GCP VM。name = var.instance_name
: 這裡使用了一個 Terraform 變數var.instance_name
作為 VM 的名稱。這個變數將在其他地方定義並提供值。zone = var.zone
: 這個部分指定了 VM 將位於的 GCP 區域。類似地,這裡使用了一個名為var.zone
的 Terraform 變數。machine_type = "e2-medium"
: 這個設置指定了 VM 的運算資源配置,即虛擬機器的機型。在這個例子中,我們選擇了 “e2-medium” 機型,這代表中等規模的虛擬機器。boot_disk
和initialize_params
: 這部分定義了 VM 的啟動磁碟配置,包括使用的映像。在這個例子中,我們選擇使用 “debian-cloud/debian-10” 映像,即 Debian 10 作業系統。network_interface
和access_config
: 這個部分指定了 VM 的網路配置,包括連接到的網路和存取配置。在這裡,我們將 VM 連接到預設網路。
接下來的部分是代碼的輸出部分,用於將 VM 的 IP 地址輸出為 Terraform 變數。具體來說:
output "instance_ip"
: 這部分定義了一個輸出,名稱為 “instance_ip”,用於將 VM 的 IP 地址暴露給其他 Terraform 設定或模組。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 變數,以便於後續的使用。
最後執行 terraform apply -auto-approve 來部署對應的資源到雲端架構上,就可以得到下列的結果。
terraform apply -auto-approve
![](https://cdn-images-1.medium.com/max/800/1*h5l_BHCNLrTm4ePAg3Gurg.png)
![](https://cdn-images-1.medium.com/max/800/1*XqGjYfkBdgUGCxIyUlkBIA.png)
Terraform tip:可以利用下列的 Terraform tip,來增進部署效率。
- 打開終端機中的 .bashrc or .zshrc 檔案
- 在文件最下方加入下列指令
- 執行 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"
課程連結
如果您覺得這篇文章對您有幫助,我誠摯地邀請您透過以下連結訂閱我的 Udemy 課程,進一步深入學習 Terraform 和 GCP 的知識:
![訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程](https://cdn-images-1.medium.com/max/800/1*1e6Kj9yUjx6itnU2bEg_gw.png)