arrow_back

在 Google Cloud 中使用 Terraform 自動化基礎架構:挑戰研究室

加入 登录

在 Google Cloud 中使用 Terraform 自動化基礎架構:挑戰研究室

1 小时 30 分钟 1 积分

GSP345

Google Cloud 自修研究室標誌

總覽

您必須在分配的時間內完成一連串的任務。挑戰研究室不會提供逐步的操作說明,您必須在特定情境下完成一組任務,自行找出完成任務的方法!自動評分系統 (如本頁面所示) 將根據您是否正確完成任務而提供意見回饋。

若想滿分達標,就必須在時限內完成所有任務!

在您參加挑戰研究室期間,系統將不會介紹 Google Cloud 概念。為了建構解決方案來解決提出的挑戰,請運用從研究室中學到的技巧,完成這個挑戰研究室的任務。您應該靈活運用所學技巧變更預設值,不過這裡不會介紹新概念。

這個研究室適合已參加在 Google Cloud 中使用 Terraform 自動化基礎架構任務的學員。準備好迎接挑戰了嗎?

測試的主題:

  • 將現有的基礎架構匯入 Terraform 設定。

  • 建構並參照自己的 Terraform 模組。

  • 將遠端後端新增至設定中。

  • 使用並實作 Terraform Registry 中的模組。

  • 重新佈建、刪除及更新基礎架構。

  • 測試所建立資源之間的連線能力。

設定和需求

點選「Start Lab」(開始研究室) 按鈕前的須知事項

請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」(開始研究室) 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。

您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。

如要完成這個研究室活動,請先確認:

  • 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意:請使用無痕模式或私密瀏覽視窗執行此研究室。這可以防止個人帳戶和學生帳戶之間發生任何衝突,避免個人帳戶產生額外費用。
  • 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
注意:如果您已有個人 Google Cloud 帳戶或專案,請勿將其用於本研究室,以免您的帳戶產生額外費用。

挑戰情境

您是一家新創公司的實習雲端工程師。在您的第一項專案中,新主管要求您以快速有效的方式打造基礎架構,並建立機制追蹤該基礎架構,以做為日後參考及調整之用。您必須依照指示使用 Terraform 完成這項專案。

針對這項專案,您將使用 Terraform 在新創公司的首選供應商 Google Cloud 上建立、部署及追蹤基礎架構;此外,還必須將一些管理不善的執行個體匯入設定中,以便進行修正。

在這個研究室中,您將使用 Terraform 匯入並建立多個 VM 執行個體、一個具有兩個子網路的虛擬私有雲網路,還要建立一項防火牆規則,讓虛擬私有雲允許兩個執行個體之間的連線。此外,您也要建立 Cloud Storage 值區來託管遠端後端。

注意:在每個部分完成之後,請執行 planapply 建立執行計畫並套用變更,讓作業順利通過驗證。

任務 1:建立設定檔

  1. 在 Cloud Shell 中,建立 Terraform 設定檔和類似下列內容的目錄結構:

main.tf variables.tf modules/ └── instances ├── instances.tf ├── outputs.tf └── variables.tf └── storage ├── storage.tf ├── outputs.tf └── variables.tf
  1. 在根目錄和模組中填寫 variables.tf 檔案。將這三個變數新增至每一個檔案中:regionzoneproject_id。至於變數的預設值,請使用 us-east1 和您的 Google Cloud 專案 ID。
注意:您應該在資源設定中適用的任何位置使用這些變數。
  1. 將 Terraform 區塊和 Google Provider 新增至 main.tf 檔案中。請確認將 zone 引數連同 projectregion 引數一起新增至 Google Provider 區塊中。

  2. 初始化 Terraform。

任務 2:匯入基礎架構

  1. 在 Google Cloud 控制台中的「導覽選單」上,依序點選「Compute Engine」>「VM 執行個體」。系統已為您建立了兩個執行個體,名稱分別為 tf-instance-1tf-instance-2
注意:點選其中一個執行個體,就會顯示其執行個體 ID開機磁碟映像檔機器類型。如要正確編寫設定並匯入 Terraform,這些都是所需內容。
  1. 將現有的執行個體匯入instances 模組中。如要這麼做,您需要執行下列步驟:
  • 首先,將模組參照新增至 main.tf 檔案中,然後重新初始化 Terraform。

  • 接下來,在 instances.tf 檔案中寫入資源設定,使其符合現有的執行個體。

    • 將執行個體命名為 tf-instance-1tf-instance-2
    • 為配合本研究室的學習目標,請盡可能縮短資源設定時間。為達成此需求,您只需在設定中包含下列其他的引數:machine_typeboot_disknetwork_interfacemetadata_startup_scriptallow_stopping_for_update。針對最後兩個引數,請使用下列設定,如此一來,就不必再重新建立:
    metadata_startup_script = <<-EOT #!/bin/bash EOT allow_stopping_for_update = true
  • 在模組中寫入資源設定後,使用 terraform import 指令將這些設定匯入 instances 模組中。

  1. 套用變更。請注意,由於您沒有填寫整個設定中的所有引數,因此 apply就地更新執行個體。雖然這不違反研究室的學習目標,但在實際工作環境中,建議您確實填寫所有引數後再執行匯入作業。

點選「Check my progress」確認目標已達成。匯入基礎架構。

任務 3:設定遠端後端

  1. storage 模組中建立 Cloud Storage 值區資源。至於值區的名稱,請使用 。而剩下的引數,使用下列內容即可:
  • location = "US"
  • force_destroy = true
  • uniform_bucket_level_access = true
注意:您可以選擇在 outputs.tf 檔案中新增輸出值。
  1. 將模組參照新增至 main.tf 檔案中。初始化這個模組,並執行 apply 套用變更,以使用 Terraform 建立值區。

  2. 將這個 Storage 值區設為 main.tf 檔案中的遠端後端。請務必使用這個前置字串 terraform/state,以便順利評分。

  3. 只要您已正確寫入設定,在執行 init 時,Terraform 就會詢問您是否要將現有的狀態資料複製到新的後端。在系統的提示訊息中,輸入 yes

點選「Check my progress」確認目標已達成。設定遠端後端。

任務 4:修改及更新基礎架構

  1. 前往 instances 模組,然後修改 tf-instance-1 資源,使其使用 e2-standard-2 機器類型。

  2. tf-instance-2 資源修改為使用 e2-standard-2 機器類型。

  3. 新增第三資源,並命名為 。對於這個第三資源,請使用 e2-standard-2 機器類型。

  4. 初始化 Terraform 並執行 apply 套用變更。

注意:您也可以選擇在模組的 outputs.tf 檔案中新增這些資源的輸出值。

點選「Check my progress」確認目標已達成。修改及更新基礎架構。

任務 5:為資源新增 taint 及刪除資源

  1. 為第三資源 新增 taint,然後執行 planapply 建立執行計畫並套用變更,以重新建立這個資源。

  2. 將這項資源從設定檔中移除,藉此刪除第三執行個體 。移除後,請初始化 terraform 並執行 apply 套用變更。

點選「Check my progress」確認目標已達成。為資源新增 taint 及刪除資源。

任務 6:使用 Registry 中的模組

  1. 在 Terraform Registry 中,前往網路模組

  2. 將這個模組新增至 main.tf 檔案中。請使用下列設定:

  • 使用版本 3.4.0 (若使用其他版本,可能會導致相容性錯誤)。

  • 將虛擬私有雲命名為 ,並使用「全域」轉送模式。

  • us-east1 區域中指定 2 個子網路,並且分別命名為 subnet-01subnet-02。至於子網路的引數,您只需要 NameIPRegion 即可。

  • 對於 subnet-01,請使用 IP 10.10.10.0/24subnet-02 則使用 10.10.20.0/24

  • 由於需要與此虛擬私有雲關聯的任何次要範圍或路徑,因此可從設定中省略這些內容。

  1. 寫入模組設定後,請初始化 Terraform 並執行 apply 建立網路。

  2. 接著,前往 instances.tf 檔案並更新設定資源,將 tf-instance-1 連結至 subnet-01,以及將 tf-instance-2 連結至 subnet-02

注意:在這個執行個體設定中,您需要將 network 引數更新為 ,然後新增 subnetwork 引數,並讓每個執行個體都有正確的子網路。

點選「Check my progress」確認目標已達成。使用 Registry 中的模組。

任務 7:設定防火牆

  • main.tf 檔案中,建立一項防火牆規則並命名為 tf-firewall
    • 這項防火牆規則應准許 網路允許 TCP 通訊埠 80 上「所有」IP 範圍 (0.0.0.0/0) 內的輸入連線
    • 請務必新增具有正確 IP 範圍 (0.0.0.0/0) 的 source_ranges 引數。
    • 初始化 Terraform 並執行 apply 套用變更。
注意:如要擷取所需的 network 引數,您可以檢查狀態,找出所建立 google_compute_network 資源的 IDself_link,格式為 projects/PROJECT_ID/global/networks/

點選「Check my progress」確認目標已達成。設定防火牆。

連線能力測試 (選用)

建立防火牆規則以允許透過虛擬私有雲進行內部連線後,您可以選擇執行連線能力測試。

  1. 確定兩個 VM 都在執行中。

  2. 依序前往「網路智慧」>「Connectivity Tests」。在兩個 VM 上執行連線能力測試,驗證可以正常連線。現在,您已驗證了執行個體之間的連線能力!

注意:請確定「Network Management API」已成功啟用:如果沒有,請點選「啟用」

配置設定應會如下所示:

配置設定頁面

恭喜!

如果您在規定的時間內,完成匯入、建立、修改及設定架構,代表您在 Terraform 技能方面展現了出色的能力!在本研究室中,您一開始是將兩個預先設定的 VM 匯入 Terraform,並建立 Cloud Storage 值區來設定後端。接著,您新增了另一個執行個體,並練習修改及更新模組中的資源設定。最後,您使用 Terraform Registry 中的模組建立了具有兩個子網路的虛擬私有雲,然後將執行個體連結到這個虛擬私有雲,並建立了一項防火牆規則來允許這些執行個體之間的連線。

這個自修研究室是在 Google Cloud 中使用 Terraform 自動化基礎架構任務的一部分。

後續步驟

現在,您已證明自己在 Terraform 方面的能力,您可能會想報考 HashiCorp Infrastructure Automation 認證。Terraform Associate 認證適用於專門從事營運、IT 或開發的雲端工程師,他們瞭解與開放原始碼 HashiCorp Terraform 相關的基本概念與技能。如果考生有在實際工作環境中使用 Terraform 的專業經驗,就能為這項考試做好最萬全的準備,不過如果能在個人示範環境中達成考試目標,或許也已足夠。所以,如果您想提升自己的技能到更高的水準,並驗證自己基礎架構自動化能力,我們建議您查看應考指南考試複習,然後在準備好時報名考試。祝您好運!

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2022 年 7 月 22 日

研究室上次測試日期:2021 年 10 月 4 日

Copyright 2022 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。