【问题标题】:Terraform explicitly pass multiple providerTerraform 显式传递多个提供程序
【发布时间】:2021-04-02 05:17:45
【问题描述】:

我使用 terraform 来满足所有基础设施需求。

我的所有配置都存储在 Azure KV 中,比如订阅“DEVOPS”。我所有用于测试的基础设施都是在订阅“Staging”中创建的

以下是我的 TF 代码

variable name {}
variable location {}
variable tags {}
 
provider "azurerm" {
    subscription_id = "Staging"
    features()
}

provider "azurerm" {
    subscription_id = "DEVOPS"
    features()
    alias = "devopskv"
}

module "resource_group" {
  source = "../modules/azure-resource-group"

    name     = var.name
    location = var.location
    tags     = var.tags
    
    providers = {
        azurerm = azurerm
        azurerm.devopskv = azurerm.devopskv
    }   
}

## Module



data "azurerm_key_vault" "kv" {
  name                = "my-kv"
  resource_group_name = "my-kv-rg"
  provider            = azurerm.devopskv
}

data "azurerm_key_vault_secret" "name" {
  name         = var.name
  key_vault_id = data.azurerm_key_vault.kv.id
  provider     = azurerm.devopskv
}

resource "azurerm_resource_group" "resource_group" {
  name     = data.azurerm_key_vault_secret.name.value
  location = var.location
  tags     = var.tags
}

预期输出: RG 在 Staging 订阅 Staging 中创建,名称从位于 DEVOPS 订阅中的 KV 获取。

实际输出: 错误: 找不到资源组“my-kv-rg”。

跟踪详细信息: TF 正在尝试从订阅“Staging”而不是“DEVOPS”中获取 KV“my-kv”。

上面有什么问题?

【问题讨论】:

  • 关于这个问题还有更多更新吗?它解决了你的问题吗?如果是,请采纳。
  • 如果解决了您的问题,您不回复也不接受是什么原因?如果有效,标记它很简单。

标签: terraform terraform-provider-azure


【解决方案1】:

要在模块中使用多个提供程序,我建议您将所有提供程序也设置在模块内。看看link。应该是这样的:

## Module

provider "azurerm" {}

provider "azurerm" {
  alias = "devopskv"
}

data "azurerm_key_vault" "kv" {
  name                = "my-kv"
  resource_group_name = "my-kv-rg"
  provider            = azurerm.devopskv
}

data "azurerm_key_vault_secret" "name" {
  name         = var.name
  key_vault_id = data.azurerm_key_vault.kv.id
  provider     = azurerm.devopskv
}

resource "azurerm_resource_group" "resource_group" {
  name     = data.azurerm_key_vault_secret.name.value
  location = var.location
  tags     = var.tags
}

另外,你还需要设置模块内部的变量来接受根级别的输入。如果您已经这样做了,请忽略此建议。

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 2020-03-03
    • 1970-01-01
    • 2021-12-26
    • 2020-08-29
    • 2021-03-29
    • 2021-09-24
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多