套用自動化工作流程
在本單元中,您將瞭解自動化的工作流程工具,以及它們如何與 Terraform 和 Azure 整合。
關於 GitHub Actions
作為基礎結構管理員,您需要使用與您專案相同的版本控制來組建與部署工作流程。
您可以使用 GitHub Actions,執行連結至 GitHub 存放庫的持續整合和持續傳遞 (CI/CD) 流程。
透過 GitHub Actions,您可以從 GitHub 內組建、測試及部署您的程式碼。 您也可以指派程式碼檢閱、管理分支及分級問題。
GitHub Actions 元件
讓我們來說明各種 GitHub Actions 元件,如下圖所示:
- 工作流程:由特定事件或活動觸發,工作流程是將軟體發展生命週期工作自動化的作業與步驟集合。
- 作業:在執行器上執行的一系列步驟。
- 步驟:可執行一或多個命令或動作的工作。 每個步驟都是由個別的動作所組成,並在特定事件 (例如提取要求) 發生之後執行。
- 動作:可合併至步驟內的獨立命令。 您可結合多個步驟以建立作業。 個別動作是封裝指令碼,可將軟體開發工作自動化。 若要建立工作流程,請將動作新增至 GitHub 存放庫中 .github/workflows 目錄內的 yml 檔案。
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 工作
執行與 Azure 互動的命令 (例如 plan
、apply
和 destroy
) 時,此工作將使用 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。