Терраформирование, поставщики пропускают наследование по модулю

#module #terraform #provider

Вопрос:

Терраформ 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 не использует наследование от родительского модуля

Спасибо

Ответ №1:

Похоже , что в вашем дочернем модуле 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 , и поэтому ваша конфигурация для поставщика должна быть унаследована ресурсами, принадлежащими этому поставщику в дочернем модуле.