簡體   English   中英

我想創建一個 devops 管道以使用 Azure 創建我的資源 Terraform

[英]I want to create a devops pipeline to create my resources in Azure using Terraform

我在網上看了很多教程....所有教程都是在發布管道中完成的......我沒有要構建和工件的 do.netcore 應用程序......我想提供我的資源沒有任何應用程序構建......

我可以在構建管道中進行嗎? 是否有任何教程可以解決上述問題?

我想知道如何在沒有任何演示生成管道的情況下配置資源...我有 .tf 文件,只想創建自動創建資源的管道。

你嘗試了什么,你期待什么? 描述你嘗試了什么,你期望發生什么,以及實際結果如何。 最少 20 個字符。

實際上,可以從 Azure DevOps 構建管道使用 Terraform 提供資源。 但是,有幾點需要考慮:

  1. 您需要為 Azure Pipelines 創建一個服務連接 這是授權 Azure 管道連接到您的雲提供商並管理您訂閱中的資源所必需的。 有可用於 Azure 資源管理器(當然)的服務連接提供程序,也可用於 AWS 和 GCP。 甚至還有一個用於一般用途的通用提供程序。

  2. 為 Azure 管道安裝 Terraform 擴展 點擊 Azure DevOps 和 select Browse marketplace右上角的購物袋圖標,找到並安裝擴展。

  3. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM