[英]I want to create a devops pipeline to create my resources in Azure using Terraform
我在網上看了很多教程....所有教程都是在發布管道中完成的......我沒有要構建和工件的 do.netcore 應用程序......我想提供我的資源沒有任何應用程序構建......
我可以在構建管道中進行嗎? 是否有任何教程可以解決上述問題?
我想知道如何在沒有任何演示生成管道的情況下配置資源...我有 .tf 文件,只想創建自動創建資源的管道。
你嘗試了什么,你期待什么? 描述你嘗試了什么,你期望發生什么,以及實際結果如何。 最少 20 個字符。
實際上,可以從 Azure DevOps 構建管道使用 Terraform 提供資源。 但是,有幾點需要考慮:
您需要為 Azure Pipelines 創建一個服務連接。 這是授權 Azure 管道連接到您的雲提供商並管理您訂閱中的資源所必需的。 有可用於 Azure 資源管理器(當然)的服務連接提供程序,也可用於 AWS 和 GCP。 甚至還有一個用於一般用途的通用提供程序。
為 Azure 管道安裝 Terraform 擴展。 點擊 Azure DevOps 和 select Browse marketplace右上角的購物袋圖標,找到並安裝擴展。
Terraform 始終需要一個后端,它可以存儲托管基礎架構的 state。 如果您沒有在 Terraform 配置中明確指定后端,它將默認使用local
后端並將 state 存儲在terraform.tfstate
文件中。 然而,當 Terraform 在管道中執行時,這將不起作用,因為管道的每次運行都將在新的虛擬機上執行,並且local
后端中的 state 將不會持續存在。 為了克服這個問題,您需要定義一個遠程后端,例如 Azure 存儲帳戶、AWS S3 存儲桶或 Google 雲存儲存儲桶。
滿足這些先決條件后,您可以在任務助手的幫助下在YAML 管道編輯器中從頭開始創建管道,或者從下面的代碼片段開始。
假設您的 terraform 文件位於存儲庫的terraform/
文件夾中,管道的以下步驟將在構建代理上安裝 Terraform,初始化工作目錄,並計划和應用執行計划來供應資源:
stages:
- stage: Infra
displayName: Deploy Infrastructure
jobs:
- job: Infra
displayName: Deploy Infrastructure
pool:
vmImage: 'ubuntu-latest'
steps:
- task: TerraformInstaller@0
displayName: 'Install Terraform'
inputs:
terraformVersion: '0.14.4'
- task: TerraformTaskV1@0
inputs:
provider: 'azurerm'
command: 'init'
workingDirectory: '$(System.DefaultWorkingDirectory)/terraform'
backendServiceArm: '<SERVICE_CONNECTION_NAME>'
backendAzureRmResourceGroupName: '<RESOURCEGROUP_NAME>'
backendAzureRmStorageAccountName: '<STORAGE_ACCOUNT_NAME>'
backendAzureRmContainerName: '<STORAGE_CONTAINER_NAME>'
backendAzureRmKey: '<NAME_OF_TERRAFORM_STATE_FILE>'
- task: TerraformTaskV1@0
displayName: 'Terraform Plan'
inputs:
provider: 'azurerm'
command: 'plan'
workingDirectory: '$(System.DefaultWorkingDirectory)/terraform'
environmentServiceNameAzureRM: '<SERVICE_CONNECTION_NAME>'
- task: TerraformTaskV1@0
displayName: 'Terraform Apply'
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: '$(System.DefaultWorkingDirectory)/terraform'
environmentServiceNameAzureRM: '<SERVICE_CONNECTION_NAME>'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.