iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0

Day 6— Terraform基礎 —Terraform 工作流程

文章目標:詳細介紹 Terraform 的工作流程,讓讀者了解如何使用 Terraform 開始管理基礎架構。

Day 6 — Terraform基礎 — Terraform 工作流程

文章同步分享到

Terraform工作流 ( Workflow ) 的概念

Workflow的實際執行位置

在Terraform工作流中,分成兩個主要部分會在不同的地方執行。

  1. Terraform init / fmt / validate / plan :都會在本地電腦完成配置與撰寫

  2. Terraform apply / destroy :會在雲端/地端架構中實際執行。

Workflow的相關說明

  1. Terraform init:初始化本地 Terraform 環境

  2. Terraform fmt / validate:格式化 Terraform 代碼與驗證 Terraform 代碼的語法與結構。

  3. Terraform plan:比較 Terraform 狀態和雲端中實際狀態,建立並顯示一個執行計畫,不會實際改變部署環境。

  4. Terraform apply:根據計畫執行實際的基礎架構創建或更改操作。

  5. Terraform destroy:刪除此特定 Terraform 環境所管理的所有資源。

Terraform工作流 ( Workflow ) 的概念

實際Terraform操作

任務目標

  1. 使用GCP的cloud shell環境,來執行terraform。

  2. 使用terrafrom 產生你的第一個雲端設施服務:GCS存儲服務,理解terraform的workflow流行。

  3. 確認五個部分的差異,都完全理解。

創建GCP專案

到GCP的專案頁面 https://console.cloud.google.com/,點選左上角選擇專案的視窗創建一個專案tf101

  • 記得你的專案ID,後面會用到

創建GCP專案

創建GCP專案名稱

啟動cloud shell並輸入代碼

創建專案以後,右上角先啟動cloud shell,並選擇使用vscode 編輯器開啟新頁面。

啟動cloud shell

新建或開啟main.tf的檔案

進入vscode 編輯器後,新建或開啟main.tf的檔案,並複製下列程式碼到視窗中,我們要利用這些程式碼練習,可以先輸入練習後,再來回來看代表的意義。

這段 Terraform 代碼是用來管理 Google Cloud Platform (GCP) 資源的,主要是創建一個 Google Cloud Storage (Bucket)。

記得你需要將 <your gcp project> 替換為實際的 GCP 專案名稱。

  • provider 用來指定 Terraform 將要使用的提供者,這裡是 “google”,表示要使用 Google Cloud 的資源。
  • project 是你的 GCP 專案名稱,你需要將 替換為實際的 GCP 專案名稱。
    region 是指定 GCP 資源所在的區域,這裡是 “asia-east1”,表示將在亞洲的東部區域創建資源。
  • resource 塊用來定義要創建的資源,這裡是一個 Google Cloud Storage 存儲資源,它將被命名為 “quick-start-gcs-bucket”。
  • location 指定了存儲資源所在的區域,這裡也是 “asia-east1”,與上述提供者的區域相同。
  • force_destroy 設置為 true 意味著在刪除這個 Terraform 設定時,Terraform 會試圖強制刪除這個存儲資源,即使它包含了資源。

範例程式碼

可以到下方的github連結中,下載對應的參考程式碼

  1. Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code

  2. Day 6- Terraform基礎 -Terraform 工作流程

    provider "google" {
      project = "<your gcp project>"
      region  = "asia-east1"
    }

    resource "google_storage_bucket" "quick-start-gcs" {
      name          = "quick-start-gcs-bucket"
      location      = "asia-east1"
      force_destroy = true
    }

範例程式碼 on cloud shell

嘗試執行terraform的五個步驟部署代碼

接下來我們會利用上面的範例程式碼,來進行後續的練習:

# terraform workflow

# 1. 初始化本地 Terraform 環境
terraform init

# 2. 格式化 Terraform 代碼。驗證 Terraform 代碼的語法與結構
terraform fmt
terraform validate

# 3. 比較 Terraform 狀態和雲端中實際狀態,建立並顯示一個執行計畫
terraform plan

# 4. 根據計畫執行實際的基礎架構創建或更改操作
terraform apply

# 5. 刪除此特定 Terraform 環境所管理的所有資源
terraform destroy
  1. 初始化本地 Terraform 環境 (terraform init)terraform init用於初始化 Terraform 專案。它會下載所需的提供者插件,確保 Terraform 可以正確地管理你的基礎架構。執行此命令後,通常會在工作目錄中生成一個名為 .terraform 的目錄。

  2. 格式化 Terraform 代碼 (terraform fmt) 和驗證代碼 (terraform validate)
    terraform fmt 用於自動格式化 Terraform 代碼,以確保代碼風格一致且易讀。
    terraform validate 用於驗證 Terraform 代碼的語法和結構是否正確,有助於檢查是否存在語法錯誤或不合規範的部分。

  3. 比較 Terraform 狀態和雲端中實際狀態,建立並顯示一個執行計畫 (terraform plan):
    terraform plan 命令用於生成一個執行計畫,它會比較你的 Terraform 配置文件與雲端基礎架構的實際狀態,並列出預計創建、變更或刪除的資源。這有助於你了解 Terraform 將對基礎架構進行的操作,但不會實際執行這些操作。

  4. 根據計畫執行實際的基礎架構創建或更改操作 (terraform apply)terraform apply 命令用於根據之前生成的計畫執行實際的基礎架構操作。這包括創建新的資源、更新現有的資源或刪除不再需要的資源。在執行此命令之前,你應該仔細審查 terraform plan 的輸出,確保操作是符合預期的。

  5. 刪除此特定 Terraform 環境所管理的所有資源 (terraform destroy)terraform destroy 命令用於刪除由 Terraform 管理的所有資源,將基礎架構還原到初始狀態。請謹慎使用此命令,因為它會永久刪除資源。

步驟一:terraform init

  1. 在vscode上開啟終端機,來執行terraform的部署

  2. 執行 terraform init 初始化本地 Terraform 環境。

步驟一:terraform init 開啟終端機

步驟一:執行terraform init

步驟二:terraform fmt 與 terraform validate

  • 執行 terraform fmt 可以格式化 Terraform 代碼。

  • 執行 terraform validate 可以驗證 Terraform 代碼的語法和結構是否正確 。

步驟二:terraform fmt 與 terraform validate

步驟三:terraform plan

  • 執行 terraform plan 用於生成一個執行計畫,它會比較你的 Terraform 配置文件與雲端基礎架構的實際狀態,並列出預計創建、變更或刪除的資源。

  • 這段 Terraform 代碼主要是創建一個 Google Cloud Storage (Bucket)。

步驟三:terraform plan

步驟四:terraform apply

  • 執行 terraform apply 用於生成一個執行計畫,它會比較你的 Terraform 配置文件與雲端基礎架構。

  • 點選yes同意部署架構,並等待生成完成。

  • 到GCP的GCS中確認資源生成

步驟四:terraform apply

步驟四:terraform plan GCS

步驟四:在GCP介面上看到GCS已經創建

步驟五:terraform destroy

  • 執行 terraform destroy 命令用於刪除由 Terraform 管理的所有資源,將基礎架構還原到初始狀態。

  • 點選yes同意移除架構,並等待移除完成。

  • 到GCP的GCS中確認資源消失

步驟五:terraform destroy

步驟五:terraform destroy 點選yes同意移除架構

步驟五:在GCP介面上看到GCS已經刪除

總結 Summary

  1. Terraform工作流 ( Workflow ):了解工作流中五個流程的各自定位,
    Terraform init / fmt / validate / plan / apply / destroy 指令各自代表的意義。

  2. 執行terraform的五個步驟部署代碼:實際部署了解一個 Google Cloud Storage (Bucket),並在cloud shell上做操作,並利用五個步驟理解Terraform工作流。最後理解 Terraform init / fmt / validate / plan / apply / destroy 指令部署一個 Google Cloud Storage (Bucket)時,實際運作的意義。

相關連結

  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 5— Terraform基礎 — 掌握 Terraform 元件
下一篇
Day 7— Terraform基礎 —效率提升:使用 bash alias
系列文
Terraform 從零開始 - 實戰Lab打造GCP雲端自動化架構31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言