套用自動化工作流程
在本單元中,您將瞭解自動化的工作流程工具,以及它們如何與 Terraform 和 Azure 整合。
關於 GitHub Actions
作為基礎結構管理員,您需要使用與您專案相同的版本控制來組建與部署工作流程。
您可以使用 GitHub Actions,執行連結至 GitHub 存放庫的持續整合和持續傳遞 (CI/CD) 流程。
透過 GitHub Actions,您可以從 GitHub 內組建、測試及部署您的程式碼。 您也可以指派程式碼檢閱、管理分支及分級問題。
GitHub Actions 元件
讓我們來說明各種 GitHub Actions 元件,如下圖所示:

- 工作流程:由特定事件或活動觸發,工作流程是自動化軟體開發生命週期工作的作業和步驟集合。
- 作業:在執行器上執行的一組步驟。
- 步驟:可執行一或多個命令或動作的工作。 每個步驟都是由個別的動作所組成,並在特定事件 (例如提取要求) 發生之後執行。
- 動作:可合併成步驟的獨立命令。 您可結合多個步驟以建立作業。 個別動作是封裝指令碼,可將軟體開發工作自動化。 若要建立工作流程,您可以將動作新增至 GitHub 存放庫中 .github/workflows 目錄中的 YAML 檔案。
Terraform GitHub 動作
此 hashicorp/setup-terraform 動作會透過下列方式,在您的 GitHub Actions 工作流程中設定 Terraform CLI:
- 下載 Terraform CLI 的特定版本,並將其新增至
PATH。 - 使用 Terraform Cloud 或 Enterprise 主機名稱和 API 權杖來設定 Terraform CLI 設定檔。
- 安裝包裝函式指令碼以包裝稍後對
terraform二進位檔的呼叫,並以名為stdout、stderr和exitcode的輸出分別公開其 STDOUT、STDERR 和結束代碼。
使用 Azure 驗證 GitHub Actions
Terraform 支援數個用於向 Azure 驗證的選項:
- 當您以互動方式使用 Terraform 時,我們建議您透過 Microsoft 帳戶進行驗證。
- 當您從程式代碼或自動化使用 Terraform 時,建議您透過 Azure 服務主體進行驗證。
服務主體是為了與應用程式、託管服務及自動化工具搭配使用來存取 Azure 資源而建立的身分識別。
後續步驟
在下個單元中,我們將設定範例專案,並使用 GitHub Actions 與 Terraform 將專案部署至 Azure。
新 Azure Pipelines 的重要概念
讓我們來瞭解組成 Azure Pipelines 的元件。
- 觸發程序會告知管線要執行。
- 管線是由一或多個 階段所組成。 管線可以部署到一或多個 環境。
- 階段是一種在管線中組織作業的方式,而且每個階段可以有一或多個 作業。
- 每個作業都會在一個 代理程式上執行。 作業也可以是無代理程式。
- 每個代理程式都會執行包含一或多個 步驟的作業。
- 步驟可以是工作或指令碼,是管線的最小組建區塊。
- 工作是預先封裝的腳本,可執行動作,例如觸發 REST API 或發布編譯產物。
- 產物是執行過程中發佈的檔案或套件集合。
提示
如需不同管線元件及其使用方式的詳細資訊,請參閱 摘要 一節中提供的連結。
Azure Pipelines 的 Terraform 工作
執行像 plan、apply 和 destroy 這樣與 Azure 互動的命令時,該任務會使用 Azure 服務連線來授權對目標訂用帳戶的操作。
聯機至 Azure 的建議方式是將服務連線系結至 Azure 服務主體。 Azure 服務主體是您為使用自動化工具來存取 Azure 資源所建立的身分識別。
下列 YAML 程式碼片段使用 Azure Pipeline Terraform 提供者 azurerm。 服務連線是透過 environmentServiceNameAzureRM 輸入來指定:
- task: TerraformTaskV1@0
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: $(Build.Repository.LocalPath)/terraform
backendAzureRmContainerName: 'tfstate'
backendAzureRmKey: 'tf/terraform.tfstate'
environmentServiceNameAzureRM: $(serviceConnection)
提示
如果您使用 azurerm 作為 Azure Pipeline Terraform 提供者,則也需要提供服務連線和記憶體容器,以搭配 Terraform 後端 狀態使用。
傳遞參數
有多種方法可將參數傳遞至 terraform 命令。 變數可讓您輕鬆地將資料的重要部分放入管線的各個部分。
您可以遵循下列步驟來設定組建管線的變數:
- 移至 [ 管線] 頁面,選取適當的管線,然後選取 [ 編輯]。
- 找出此管線的 [變數]。
- 新增或更新變數。
- 若要將變數標記為秘密,請選取 [將此值保密]。
- 儲存管線。
輸出 Terraform 至管線變數
Terraform CLI 工作支援執行 Terraform output 命令。 執行 CLI 時,會從 terraform output 命令發出每個輸出變數以建立管線變數。
後續步驟
在下個單元中,我們將設定範例專案,並使用 Azure Pipelines 與 Terraform 將專案部署至 Azure。