我用地形来满足所有的需要。
我所有的配置都存储在Azure中,比如订阅"DEVOPS“。所有用于测试的代码都是在订阅“暂存”中创建的。
以下是我的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是在使用驻留在DEVOPS订阅中的KV获取的名称暂存订阅时创建的。
实际输出:错误:找不到资源组“my”。
跟踪详细信息: TF试图从订阅“暂存”中获取KV“my”,而不是"DEVOPS“。
上面有什么问题吗?
发布于 2020-12-24 03:04:09
要在模块中使用多个提供程序,我建议您设置模块中的所有提供程序。看一看链接。应该是这样的:
## 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
}此外,还需要在模块中设置变量以接受根级别的输入。如果你已经做过了,就忽略这个建议吧。
https://stackoverflow.com/questions/65426717
复制相似问题