arrow_back

Build Infrastructure with Terraform on Google Cloud:挑戰研究室

加入 登录
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Build Infrastructure with Terraform on Google Cloud:挑戰研究室

Lab 1 小时 30 分钟 universal_currency_alt 5 积分 show_chart 中级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP345

Google Cloud 自修研究室標誌

總覽

在挑戰研究室中,您必須在特定情境下完成一系列任務。挑戰研究室不會提供逐步的操作說明,您必須運用從解決研究室任務中所學到的技巧,自行找出完成任務的方法!自動評分系統 (如本頁面所示) 將根據您是否正確完成任務而提供意見。

在您完成任務的期間,挑戰研究室不會介紹新的 Google Cloud 概念。您須靈活運用所學技巧,例如變更預設值或詳讀並研究錯誤訊息,解決遇到的問題。

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

這個研究室適合已參加 Build Infrastructure with Terraform on Google Cloud 課程的學員。準備好迎接挑戰了嗎?

測試的主題:

  • 將現有的基礎架構匯入 Terraform 設定。
  • 建構並參照自己的 Terraform 模組。
  • 將遠端後端新增至設定中。
  • 使用並實作 Terraform Registry 中的模組。
  • 重新佈建、刪除及更新基礎架構。
  • 測試所建立資源之間的連線能力。

設定和需求

點選「Start Lab」按鈕前的須知事項

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

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

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

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

挑戰情境

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

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

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

注意:在每個部分完成之後,請執行 planapply 來建立執行計畫並套用變更,讓作業順利通過驗證。我們會更新這個研究室中的許多 Terraform 檔案,因此請務必使用正確的檔案路徑,並維持正確的縮排設定。

工作 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。至於變數的預設值,請使用 和您的 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 機器類型。請務必將這三個執行個體的機器類型全部變更為 e2-standard-2

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

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

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

工作 5:移除資源

  1. 從設定檔中移除資源,刪除第三個執行個體 。移除後,請初始化 Terraform 並執行 apply 套用變更。

點選「Check my progress」,確認目標已達成。移除資源。

工作 6:使用 Registry 中的模組

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

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

  • 使用版本 6.0.0 (如果使用其他版本,可能會導致相容性錯誤)。
  • 將虛擬私有雲命名為 ,並採用「全域」轉送模式。
  • 區域中指定 2 個子網路,分別命名為 subnet-01subnet-02。至於子網路的引數,只需要 NameIPRegion 即可。
  • 至於 IP,subnet-01 請使用 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 中的模組建立了有兩個子網路的虛擬私有雲、將執行個體連線至該虛擬私有雲,並建立防火牆規則來允許這兩項資源之間的連線。

Build Infrastructure with Terraform on Google Cloud

取得下一枚技能徽章

這個自修研究室屬於 Build Infrastructure with Terraform on Google Cloud 技能徽章課程的一部分。完成這個技能徽章課程即可獲得上方的徽章,表彰您的成就。您可以在履歷表和社群平台分享徽章,並使用 #GoogleCloudBadge 公開成就。

後續步驟

現在,您已證明自己在 Terraform 方面的能力,您可能會想報考 HashiCorp Infrastructure Automation 認證。Terraform Associate 認證適用於瞭解開放原始碼 HashiCorp Terraform 相關基本概念與技能的使用者,比方說,專門從事營運、IT 或開發的雲端工程師。如果考生具備專業經驗,能在正式環境中使用 Terraform,就表示已準備好參加測驗,不過如果能在個人示範環境中達成測驗目標,或許也已足夠。所以如果您想精進技能、驗證自己基礎架構自動化的能力,我們建議您查看應考指南測驗複習,並在準備好時報名測驗。祝您順利!

Google Cloud 教育訓練與認證

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

使用手冊上次更新日期:2024 年 3 月 22 日

研究室上次測試日期:2024 年 3 月 22 日

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