繁体   English   中英

AzureRM 多个提供商中断

[英]AzureRM Multiple Providers breaking

我不确定我是否做错了什么,但我正在尝试使用多个提供者[带有别名 + 订阅,以便我可以在不同的 sub 中使用 keyvault]

简化事情。


一个轻微的更新。 我删除了任何复杂性并在一个简单的 main.tf 中执行了以下操作:

terraform {
  required_version = ">= 0.13.0"

  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=2.93.1"
    }
    random = {
      source  = "hashicorp/random"
      version = "=3.1.0"
    }
  }
}


provider "azurerm" {
  features {}
  skip_provider_registration = true
}


provider "azurerm" {
  skip_provider_registration = true
  alias           = "kvaccess"
  subscription_id = "subforkvaccess"
  features {}
}


data "azurerm_key_vault" "this" {
  provider            = azurerm.kvaccess
  name                = "kvname"
  resource_group_name = "kvresourcegroup"
}


resource "azurerm_key_vault_secret" "secret" {
  key_vault_id = data.azurerm_key_vault.this.id
  name         = "test"
  value        = "test"
  provider     = azurerm.kvaccess
}

秘密已创建,然后超时并出现以下错误:

2022-03-18T19:45:54.921-0400 [ERROR] vertex "azurerm_key_vault_secret.secret" error: Provider produced inconsistent result after apply
╷
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to azurerm_key_vault_secret.secret, provider "provider[\"registry.terraform.io/hashicorp/azurerm\"].kvaccess" produced an unexpected new value: Root resource was present, but now
│ absent.
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.

没有子模块或任何花哨的东西。 只是一个主要的 TF 试图在本地创建一个秘密。 我在这里做错了什么吗?

在我的环境中测试工作正常。 使用下面的 terraform 代码,我已对您的代码进行了更改。

  1. 您缺少创建资源组,或者如果您想使用现有资源组使用数据源
  2. 确保你在terraform 应用之前点击terraform 初始化

Terraform 代码:

 terraform { required_version = ">= 0.13.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "=2.93.1" } random = { source = "hashicorp/random" version = "=3.1.0" } } } provider "azurerm" { features {} skip_provider_registration = true } provider "azurerm" { skip_provider_registration = true alias = "kvaccess" subscription_id = "b83XXXXXXXXXXXXXXXXX-b5ba-2b83" features {} } data "azurerm_resource_group" "example" { name = "v-XXXXXXdtree" } data "azurerm_key_vault" "this" { provider = azurerm.kvaccess name = "kvname342" resource_group_name = data.azurerm_resource_group.example.name } resource "azurerm_key_vault_secret" "secret" { key_vault_id = data.azurerm_key_vault.this.id name = "test" value = "test" provider = azurerm.kvaccess }

在此处输入图像描述

Output 在此处输入图像描述

存在与 Hashicorp 一起打开的现有错误11059

它已被讨论为一个不能总是复制的偶发问题,并且与 ARM 缓存不同步有关。

讨论了以下解决方法步骤:

  1. 抓住这个确切的错误
  2. 向 KeyVault 资源添加具有任何值(如 test:test)的标签
  3. 运行 terraform 导入命令以显式导入已经存在且 terraform 在应用阶段无法获取的现有机密。
  4. 再次执行apply就可以通过

虽然这似乎不太可能在您的自动化中实现,但我认为除了上面讨论的解决方法之外没有其他解决方法。

免责声明::我无法在各种情况下进行复制。 因此,按原样共享..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM