在本教學課程中,您將瞭解如何開始使用 Terraform,並透過 Terraform 在 Compute Engine 上建立基本網路伺服器。
在本教學課程中,執行下列操作:
- 使用 Terraform 在 Trusted Cloud中建立 VM。
- 啟動基本的 Python Flask 伺服器。
費用
在本文件中,您會使用 Trusted Cloud by S3NS的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
準備開始教學課程。
選取或建立專案
-
In the Trusted Cloud console, go to the project selector page.
-
Select or create a Trusted Cloud project.
設定權限
確認您的使用者帳戶具備必要的 Compute Engine 權限:
compute.instances.*
compute.firewalls.*
如要進一步瞭解角色和權限,請參閱這篇文章。
啟用 API
Enable the Compute Engine API.
安裝 gcloud CLI
如要從本機開發環境使用 Terraform,請安裝並初始化 Google Cloud CLI,然後使用您的使用者憑證設定應用程式預設憑證:
建立 Compute Engine VM
首先,您要在 Terraform 設定檔中定義 VM 的設定。接著,您會執行 Terraform 指令,在專案中建立 VM。
建立目錄
建立新目錄。在新目錄中,建立 Terraform 設定的 main.tf
檔案。這個檔案的內容會說明專案中要建立的所有 Trusted Cloud 資源。
mkdir tf-tutorial && cd tf-tutorial
nano main.tf
建立虛擬私有雲網路和子網路
在本節中,您會為虛擬機器的網路介面建立虛擬私有雲 (VPC) 網路和子網路。
將下列 Terraform 資源新增至您建立的 main.tf
檔案:
建立 Compute Engine VM 資源
在本節中,您將建立執行 Debian 的單一 Compute Engine 執行個體。在本教學課程中,您將使用最小的機器類型。日後可以升級至較大的機器類型。
將下列 google_compute_instance
Terraform 資源新增至您建立的 main.tf
檔案。
範例程式碼會將 Trusted Cloud 可用區設為 us-west1-a
。您可以將此設定變更為其他區域。
初始化 Terraform
此時,您可以執行 terraform init
來新增必要的外掛程式,並建構 .terraform
目錄。
terraform init
輸出:
Initializing the backend... Initializing provider plugins... ... Terraform has been successfully initialized!
驗證 Terraform 設定
您也可以選擇驗證目前建構的 Terraform 程式碼。執行 terraform plan
,這個指令會執行下列動作:
- 確認
main.tf
的語法正確無誤 - 顯示即將建立的資源預覽畫面
terraform plan
輸出:
... Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
套用設定
如要建立 VM,請執行 terraform apply
。
terraform apply
系統顯示提示訊息時,請輸入 yes
。
Terraform 會呼叫 Trusted Cloud API 來設定新的 VM。查看「VM instances」(VM 執行個體) 頁面,確認新 VM 是否已建立。
在 Trusted Cloud上執行網路伺服器
接下來的步驟是建立網頁應用程式、將其部署至 VM,以及建立防火牆規則,允許用戶端向網頁應用程式發出要求。
新增自訂 SSH 防火牆規則
default
網路中的 default-allow-ssh
防火牆規則可讓您使用 SSH 連線至 VM。如果您想使用自己的自訂防火牆規則,可以在 main.tf
檔案結尾新增下列資源:
執行 terraform apply
來建立防火牆規則。
透過 SSH 連線至 VM
使用 SSH 連線至 VM,確認此時所有設定都正確無誤。
找出名為
flask-vm
的 VM。在「連線」欄中,按一下「SSH」。
系統會開啟執行中 VM 的 SSH-in-browser 終端機視窗。
詳情請參閱「連線至 VM」一文。
建構 Flask 應用程式
在本教學課程中,您會建構 Python Flask 應用程式,因此可以透過單一檔案說明網路伺服器和測試端點。
在 SSH-in-browser 終端機中,建立名為
app.py
的檔案。nano app.py
在
app.py
檔案中新增下列內容:from flask import Flask app = Flask(__name__) @app.route('/') def hello_cloud(): return 'Hello Cloud!' app.run(host='0.0.0.0')
執行
app.py
:python3 app.py
Flask 預設會在
localhost:5000
上提供流量。開啟第二個 SSH 連線:
- 前往「VM instances」(VM 執行個體) 頁面。
- 找到名為
flask-vm
的 VM,然後按一下「SSH」SSH。
在第二個 SSH 連線中執行
curl
,確認系統傳回您在app.py
中設定的問候語。curl http://0.0.0.0:5000
這項指令會輸出
Hello Cloud
。
在 VM 上開啟通訊埠 5000
如要從本機電腦連線至網頁伺服器,VM 必須開啟通訊埠 5000。您可以使用防火牆規則,透過 Trusted Cloud 開啟通訊埠以傳輸流量。
在 main.tf
檔案結尾處新增下列 google_compute_firewall
Terraform 資源。
執行 terraform apply
來建立防火牆規則。
新增 Web 伺服器網址的輸出變數
在
main.tf
結尾,加入 Terraform 輸出變數,輸出網頁伺服器網址:// A variable for extracting the external IP address of the VM output "Web-server-URL" { value = join("",["http://",google_compute_instance.default.network_interface.0.access_config.0.nat_ip,":5000"]) }
執行
terraform apply
。terraform apply
系統顯示提示訊息時,請輸入
yes
。Terraform 會在畫面上列印 VM 的外部 IP 位址和 5000 埠,如下所示:Web-server-URL = "http://IP_ADDRESS:5000"
您隨時可以執行
terraform output
,傳回這項輸出內容:terraform output
按一下上一個步驟的網址,查看「Hello Cloud!」訊息。
這表示伺服器正在運作中。
疑難排解
如果未啟用必要 API,Terraform 會傳回錯誤。錯誤訊息包含啟用 API 的連結。啟用 API 後,您可以重新執行
terraform apply
。如果無法透過 SSH 連線至 VM,請按照下列步驟操作:
- 請務必新增 SSH 防火牆規則。
- 確認 VM 包含
tags = ["ssh"]
引數。
清除所用資源
完成本教學課程後,您可以刪除所有建立的項目,以免產生任何額外費用。
您可以使用 Terraform 執行 terraform destroy
指令,移除設定檔中定義的所有資源:
terraform destroy
輸入 yes
,允許 Terraform 刪除資源。