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