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 代码,我已在您的代码中进行了更改。
- 您未能创建资源组,或者如果您想使用现有资源组,请使用数据源
- 确保在 terraform apply
之前点击 terraform init
地形代码:
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
}
输出
存在与 Hashicorp 一起打开的现有错误 11059。
它已被讨论为一个不能总是复制的偶发问题,并且与 ARM 缓存不同步有关。
讨论了以下变通步骤:
- 捕获这个确切的错误
- 将具有任何值(如 test:test)的标签添加到 KeyVault 资源
- 运行 terraform import 命令用于显式导入已经存在的现有秘密,并且 terraform 在应用阶段无法获得。
- 再次执行apply即可通过
虽然这似乎不太可能在您的自动化中实现,但我认为除了上面讨论的解决方法之外没有其他解决方法。
免责声明::我无法复制各种场景。因此,分享 as-is..
我不确定我是否做错了什么,但我正在尝试使用多个提供商[带有别名 + 订阅,以便我可以在不同的 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 代码,我已在您的代码中进行了更改。
- 您未能创建资源组,或者如果您想使用现有资源组,请使用数据源
- 确保在 terraform apply 之前点击 terraform init
地形代码:
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 }
输出
存在与 Hashicorp 一起打开的现有错误 11059。
它已被讨论为一个不能总是复制的偶发问题,并且与 ARM 缓存不同步有关。
讨论了以下变通步骤:
- 捕获这个确切的错误
- 将具有任何值(如 test:test)的标签添加到 KeyVault 资源
- 运行 terraform import 命令用于显式导入已经存在的现有秘密,并且 terraform 在应用阶段无法获得。
- 再次执行apply即可通过
虽然这似乎不太可能在您的自动化中实现,但我认为除了上面讨论的解决方法之外没有其他解决方法。
免责声明::我无法复制各种场景。因此,分享 as-is..