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