Terraform,提供者错过了模块上的继承

Terraform, providers miss inherits on module

Terraform v0.14.8

当我尝试启动 terraform init 时遇到这个问题,找不到提供程序 registry.terraform。io/hashicorp/aci

我想使用我的供应商:registry.terraform.io/ciscodevnet/aci

$ 地形提供者

配置所需的提供商:

.  
├── provider[registry.terraform.io/ciscodevnet/aci] 0.5.4  
└── module.bride_domain_2001  
        └── provider[registry.terraform.io/hashicorp/aci] 

我的问题:如何在模块上强制使用 registry.terraform.io/ciscodevnet/aci?

我如何称呼我的模块:

    module "bride_domain_2001" {
      source = "./modules/bride_domain_2001"

      aci_vrf_vrf_training_id= aci_vrf.vrf_training.id
      aci_tenant_tenant_training_id= aci_tenant.tenant_training.id
    }

预期行为
内部供应商应从父级继承并使用

实际行为
Terraform 不使用父模块的继承

谢谢

您的子模块 bride_domain_2001 似乎缺少一个 required_providers 条目来指定它依赖于 ciscodevnet/aci,这导致 Terraform 的向后兼容性行为假设您的意思是 hashicorp/aci.

要修复它,请向您的子模块添加一个 required_providers 条目:

terraform {
  required_providers {
    aci = {
      source = "ciscodevnet/aci"
      # (possibly also a >= version constraint)
    }
  }
}

一旦你添加了这个,Terraform 就会看到根模块和子模块都依赖于同一个提供者 ciscodevnet/aci,所以你的 configuration 提供者应该被资源继承属于子模块中的那个提供者。