检查点
Import infrastructure
/ 20
Configure a remote backend
/ 10
Modify and update infrastructure
/ 20
Destroy resources
/ 10
Use a Module from the Registry
/ 20
Configure a firewall
/ 20
在 Google Cloud 中使用 Terraform 自動化基礎架構:挑戰研究室
GSP345
總覽
您必須在分配的時間內完成一連串的任務。挑戰研究室不會提供逐步的操作說明,您必須在特定情境下完成一組任務,自行找出完成任務的方法!自動評分系統 (如本頁面所示) 將根據您是否正確完成任務而提供意見回饋。
若想滿分達標,就必須在時限內完成所有任務!
在您參加挑戰研究室期間,系統將不會介紹 Google Cloud 概念。為了建構解決方案來解決提出的挑戰,請運用從研究室中學到的技巧,完成這個挑戰研究室的任務。您應該靈活運用所學技巧變更預設值,不過這裡不會介紹新概念。
這個研究室適合已參加在 Google Cloud 中使用 Terraform 自動化基礎架構任務的學員。準備好迎接挑戰了嗎?
測試的主題:
-
將現有的基礎架構匯入 Terraform 設定。
-
建構並參照自己的 Terraform 模組。
-
將遠端後端新增至設定中。
-
使用並實作 Terraform Registry 中的模組。
-
重新佈建、刪除及更新基礎架構。
-
測試所建立資源之間的連線能力。
設定和需求
點選「Start Lab」(開始研究室) 按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」(開始研究室) 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
挑戰情境
您是一家新創公司的實習雲端工程師。在您的第一項專案中,新主管要求您以快速有效的方式打造基礎架構,並建立機制追蹤該基礎架構,以做為日後參考及調整之用。您必須依照指示使用 Terraform 完成這項專案。
針對這項專案,您將使用 Terraform 在新創公司的首選供應商 Google Cloud 上建立、部署及追蹤基礎架構;此外,還必須將一些管理不善的執行個體匯入設定中,以便進行修正。
在這個研究室中,您將使用 Terraform 匯入並建立多個 VM 執行個體、一個具有兩個子網路的虛擬私有雲網路,還要建立一項防火牆規則,讓虛擬私有雲允許兩個執行個體之間的連線。此外,您也要建立 Cloud Storage 值區來託管遠端後端。
plan
和 apply
建立執行計畫並套用變更,讓作業順利通過驗證。任務 1:建立設定檔
-
在 Cloud Shell 中,建立 Terraform 設定檔和類似下列內容的目錄結構:
- 在根目錄和模組中填寫
variables.tf
檔案。將這三個變數新增至每一個檔案中:region
、zone
和project_id
。至於變數的預設值,請使用us-east1
、和您的 Google Cloud 專案 ID。
-
將 Terraform 區塊和 Google Provider 新增至
main.tf
檔案中。請確認將 zone 引數連同 project 和 region 引數一起新增至 Google Provider 區塊中。 -
初始化 Terraform。
任務 2:匯入基礎架構
- 在 Google Cloud 控制台中的「導覽選單」上,依序點選「Compute Engine」>「VM 執行個體」。系統已為您建立了兩個執行個體,名稱分別為
tf-instance-1
和tf-instance-2
。
- 將現有的執行個體匯入至
instances
模組中。如要這麼做,您需要執行下列步驟:
-
首先,將模組參照新增至
main.tf
檔案中,然後重新初始化 Terraform。 -
接下來,在
instances.tf
檔案中寫入資源設定,使其符合現有的執行個體。- 將執行個體命名為
tf-instance-1
和tf-instance-2
。 - 為配合本研究室的學習目標,請盡可能縮短資源設定時間。為達成此需求,您只需在設定中包含下列其他的引數:
machine_type
、boot_disk
、network_interface
、metadata_startup_script
和allow_stopping_for_update
。針對最後兩個引數,請使用下列設定,如此一來,就不必再重新建立:
metadata_startup_script = <<-EOT #!/bin/bash EOT allow_stopping_for_update = true - 將執行個體命名為
-
在模組中寫入資源設定後,使用
terraform import
指令將這些設定匯入instances
模組中。
- 套用變更。請注意,由於您沒有填寫整個設定中的所有引數,因此
apply
會就地更新執行個體。雖然這不違反研究室的學習目標,但在實際工作環境中,建議您確實填寫所有引數後再執行匯入作業。
點選「Check my progress」確認目標已達成。
任務 3:設定遠端後端
- 在
storage
模組中建立 Cloud Storage 值區資源。至於值區的名稱,請使用。而剩下的引數,使用下列內容即可:
location = "US"
force_destroy = true
uniform_bucket_level_access = true
outputs.tf
檔案中新增輸出值。-
將模組參照新增至
main.tf
檔案中。初始化這個模組,並執行apply
套用變更,以使用 Terraform 建立值區。 -
將這個 Storage 值區設為
main.tf
檔案中的遠端後端。請務必使用這個前置字串terraform/state
,以便順利評分。 -
只要您已正確寫入設定,在執行
init
時,Terraform 就會詢問您是否要將現有的狀態資料複製到新的後端。在系統的提示訊息中,輸入yes
。
點選「Check my progress」確認目標已達成。
任務 4:修改及更新基礎架構
-
前往
instances
模組,然後修改 tf-instance-1 資源,使其使用e2-standard-2
機器類型。 -
將 tf-instance-2 資源修改為使用
e2-standard-2
機器類型。 -
新增第三資源,並命名為
。對於這個第三資源,請使用 e2-standard-2
機器類型。 -
初始化 Terraform 並執行
apply
套用變更。
outputs.tf
檔案中新增這些資源的輸出值。點選「Check my progress」確認目標已達成。
任務 5:為資源新增 taint 及刪除資源
-
為第三資源
新增 taint,然後執行 plan
和apply
建立執行計畫並套用變更,以重新建立這個資源。 -
將這項資源從設定檔中移除,藉此刪除第三執行個體
。移除後,請初始化 terraform 並執行 apply
套用變更。
點選「Check my progress」確認目標已達成。
任務 6:使用 Registry 中的模組
-
在 Terraform Registry 中,前往網路模組。
-
將這個模組新增至
main.tf
檔案中。請使用下列設定:
-
使用版本
3.4.0
(若使用其他版本,可能會導致相容性錯誤)。 -
將虛擬私有雲命名為
,並使用「全域」轉送模式。 -
在
us-east1
區域中指定 2 個子網路,並且分別命名為subnet-01
和subnet-02
。至於子網路的引數,您只需要 Name、IP 和 Region 即可。 -
對於
subnet-01
,請使用 IP10.10.10.0/24
,subnet-02
則使用10.10.20.0/24
。 -
由於不需要與此虛擬私有雲關聯的任何次要範圍或路徑,因此可從設定中省略這些內容。
-
寫入模組設定後,請初始化 Terraform 並執行
apply
建立網路。 -
接著,前往
instances.tf
檔案並更新設定資源,將 tf-instance-1 連結至subnet-01
,以及將 tf-instance-2 連結至subnet-02
。
,然後新增 subnetwork 引數,並讓每個執行個體都有正確的子網路。點選「Check my progress」確認目標已達成。
任務 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
資源的 ID 或 self_link,格式為 projects/PROJECT_ID/global/networks/
。點選「Check my progress」確認目標已達成。
連線能力測試 (選用)
建立防火牆規則以允許透過虛擬私有雲進行內部連線後,您可以選擇執行連線能力測試。
-
確定兩個 VM 都在執行中。
-
依序前往「網路智慧」>「Connectivity Tests」。在兩個 VM 上執行連線能力測試,驗證可以正常連線。現在,您已驗證了執行個體之間的連線能力!
配置設定應會如下所示:
恭喜!
如果您在規定的時間內,完成匯入、建立、修改及設定架構,代表您在 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 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。