azure - 为什么我无法将 dependent_on block 添加到具有提供程序配置的模块?

标签 azure terraform terraform-provider-azure terraform0.12+

在为我的 Terraform 模块编写示例时,我收到错误: “模块包含提供者配置” “无法使用 count、for_each 或 dependent_on 在模块内配置提供程序。”

当我尝试将 depends_on block 添加到模块的声明中以避免在创建部署模块内资源所需的资源组之前尝试运行模块计划时,出现此错误。

如果我不添加 depends_on block ,它也会中断,因为它找不到在模块运行以填充所需资源组数据源之前应创建的已声明资源组。

我发现要求删除 providers block 或删除所有数据源至少让人感到不舒服。

我找不到有关此错误或如何修复该错误的任何详细信息。

Specific line that raises this error inside Terraform's code.

最佳答案

从错误消息来看,似乎存在 Provider 冲突。当使用与父级中声明的提供程序不同的提供程序调用模块时,可能会发生这种情况。

示例

.
├── main.tf
├── outputs.tf
├── provider.tf
├── runtime.yaml
└── variables.tf

如果在上面的提供程序中声明以下内容:

provider "google" {
  project = var.gcp_project_id
  region  = var.gcp_region
  zone    = var.gcp_zone
}

provider "google-beta" {
  project = var.gcp_project_id
  region  = var.gcp_region
  zone    = var.gcp_zone
}

如果您随后引用一个模块,则期望该模块引用上述父提供程序配置。如果模块声明了自己的配置并且与上面的不同,Terraform 将报告错误。

要解决此问题,您应该尊重父提供商。从模块中删除提供者声明,然后依赖关系应该是兼容的。

另请注意,当您更新提供程序时 - 您将需要执行 terraform init。我删除了预先存在的 Terraform 隐藏目录,以确保它正确选择新设置。

关于azure - 为什么我无法将 dependent_on block 添加到具有提供程序配置的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67361809/

相关文章:

azure - 如何在Azure azurerm_virtual_network_gateway资源中设置 "bgp_settings" block ?

terraform - 如何在 Hashicorp Terraform 中配置环境变量

java - 来自 Java 和 Azure 的 Microsoft Translator API

python - Azure Face API 给出 ​​APIErrorException : (InvalidRequest) Invalid request has been sent

azure - 使用现有资源在 Azure 中的 terraform 中创建资源并创建新资源

azure - 在 TF 中引用 map 对象

c# - 显示来自 azure blob 容器的图像

azure - 通过 Visual Studio 2013 Update 4 部署的计划 WebJob 导致按需作业

amazon-web-services - Terraform 读取现有资源的详细信息

amazon-web-services - Terraform + Route53 - 管理现有记录