Terraform 未能为第三方提供程序安装提供程序

Terraform 未能为第三方提供程序安装提供程序,terraform,Terraform,我正在使用terraform模块在Azure Devops中应用干式原理。我们与官方的Azure Devops提供商一起使用自定义提供商。使用我们制作的模块,开发人员使用的tf文件只用于声明变量,因为资源的配置是由DevOps团队完成的 该模块由一个TF文件和一个托管在/modules/build_ci中的变量文件组成 构建ci.tf: resource "build_definition_resource" "Build_CI" { trigge

我正在使用terraform模块在Azure Devops中应用干式原理。我们与官方的Azure Devops提供商一起使用自定义提供商。使用我们制作的模块,开发人员使用的tf文件只用于声明变量,因为资源的配置是由DevOps团队完成的

该模块由一个TF文件和一个托管在/modules/build_ci中的变量文件组成

构建ci.tf:

resource "build_definition_resource" "Build_CI" {
    trigger_ci      = true
    solution_name   = var.solution_name
    repository      = var.repository
    pool            = var.pool
    branch          = var.branch
    branches_ci     = var.branches_ci
    
    dynamic "build_template" {
        for_each = var.templates
        iterator = task
        content {
            name    = task.value["name"]
            input   = task.value["inputs"]
    }
    }
}
变量。tf

variable "solution_name" {
    type = string
}

variable "repository" {
    type = string
}

variable "pool" {
    type    = string
    default = "alm-aws-pool"
}

variable "branch" {
    type    = string
    default = "master"
}

variable "branches_ci" {
    type    = list(string)
    default = ["master", "release/*"]
}

variable "templates" {
    type = list(object({
        name    = string
        inputs  = map(string)
    }))

    default = [
        {
            name    = "templates/build/tg1_build&nuget.yaml"
            inputs  = {
                IsNugetPrerelaseVersion = "false"
                BuildConfiguration = "Release"
                BuildPlatform = "Any CPU"
                SearchPatternToPack = "none"
            }        
        },
        {
            name    = "templates/build/TG2_Validations.yaml"
            inputs  = {
                BuildConfiguration = "Release"
            }
        },
        {
            name    = "templates/build/TG3_Publish.yaml"  
            inputs  = null      
        }
    ]
}
build_template组件调用托管在另一个存储库中的yaml模板

这个模块的使用是这样的

module "app_Build_CI" {
    source          = "../modules/build_ci"
    solution_name   = "app"
    repository      = "app_repository"
}
地形提供者是:

provider "test_provider" {
  uri = "#{custom_provider_uri}"
  
}

provider "azuredevops" {
  org_service_url = "#{AZDO_ORG_SERVICE_URL}#"
  personal_access_token = "#{AZDO_PERSONAL_ACCESS_TOKEN}#"
}

terraform {
  required_version = ">= 0.12"
  backend "s3" {
    bucket = "#{BUCKET}#"
    key    = "#{KEY}#"
    region = "#{REGION}#"
      access_key = "#{access_key}#"
      role_arn = "#{ARN_ROLE}#"
      external_id = "#{EXTERNAL_ID}#"
  }
  
  required_providers {
    test_provider = {
      versions = ["0.2"]
      source = "test/provider/test"
    }
    azuredevops = {
      source = "microsoft/azuredevops"
      version = ">=0.1.0"
    }
    repo = {
      versions = ["0.2"]
      source = "test/provider/test"
    }
    build = {
      versions = ["0.2"]
      source = "test/provider/test"
    }
  }
}
问题出现在执行terraform初始化时,我们得到一个错误,说明它无法安装我们不使用的hashicorp/build提供程序。如果我使用没有模块的旧结构,它可以工作,但是当使用模块时,它会失败

Error: Failed to install provider

Error while installing hashicorp/build: provider registry
registry.terraform.io does not have a provider named
registry.terraform.io/hashicorp/build
有人知道这个错误是由什么引起的吗?
非常感谢

错误在于模块文件夹必须包含提供程序,否则将使用官方hashicorp提供程序,而不是第三方提供程序。就这些