在地形中管理Azure CosmosDB帐户-状态在应用后未正确更新



我在Terraform中管理一个CosmosDB帐户,但每次我计划时,它都想设置default_identity_type。当我应用此项时,状态文件不会反映更改,因此在后续计划中,它会尝试再次应用相同的更改。

Azure中的实际资源已经存在一段时间了,我使用terraform import ...导入了状态。状态如下(删除了敏感值(:

{
"module": "module.main",
"mode": "managed",
"type": "azurerm_cosmosdb_account",
"name": "root",
"provider": "provider["registry.terraform.io/hashicorp/azurerm"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_key_metadata_writes_enabled": true,
"analytical_storage": [
{
"schema_type": ""
}
],
"analytical_storage_enabled": false,
"backup": [
{
"interval_in_minutes": 1440,
"retention_in_hours": 48,
"storage_redundancy": "Geo",
"type": "Periodic"
}
],
"capabilities": [
{
"name": "EnableServerless"
}
],
"capacity": [],
"consistency_policy": [
{
"consistency_level": "Session",
"max_interval_in_seconds": 5,
"max_staleness_prefix": 100
}
],
"cors_rule": [],
"create_mode": "",
"default_identity_type": "",
"enable_automatic_failover": false,
"enable_free_tier": false,
"enable_multiple_write_locations": false,
"geo_location": [
{
"failover_priority": 0,
"location": "northeurope",
"prefix": "",
"zone_redundant": false
}
],
"identity": [],
"ip_range_filter": "",
"is_virtual_network_filter_enabled": false,
"key_vault_key_id": null,
"kind": "GlobalDocumentDB",
"local_authentication_disabled": false,
"location": "northeurope",
"mongo_server_version": null,
"network_acl_bypass_for_azure_services": false,
"network_acl_bypass_ids": [],
"offer_type": "Standard",
"public_network_access_enabled": true,
"resource_group_name": "dev",
"restore": [],
"timeouts": {
"create": null,
"delete": null,
"read": null,
"update": null
},
"virtual_network_rule": []
},
"sensitive_attributes": [],
"dependencies": [
"module.main.azurerm_resource_group.main",
"module.main.azurerm_resource_group.root"
]
}
]
}

所以当我plan时,我得到:更新到位警告

我的地形非常基本,因为我只是使用大多数属性的默认值:

resource "azurerm_cosmosdb_account" "root" {
name                  = "some-name"
location              = azurerm_resource_group.root.location
offer_type            = "Standard"
resource_group_name   = azurerm_resource_group.root.name
kind                  = "GlobalDocumentDB"
geo_location {
failover_priority   = 0
location            = azurerm_resource_group.root.location
}
consistency_policy {
consistency_level   = "Session"
}
tags                  = merge(var.tags, var.cosmosdb_account_tags)
}

最近,围绕default_identity_type的使用和AzureRM提供程序的更新(高达2.90版本(出现了一些问题,但我仍然遇到这个问题。

有人能解决这个问题吗?

我的声誉不允许我发表评论,但通常情况下,当Terraform坚持更改资源时,它会告诉你该属性的当前值以及它想将其更改为什么。(通常为null(

作为一种解决方法,尝试添加属性default_identity_type,并将其设置为Terraform所说的任何值,然后再次运行计划,看看它是否改变了行为。

编辑:我刚刚看了一下屏幕截图。因此,作为解决方法,您应该设置的值是"FirstPartyIdentity"

从文档来看,它应该是可选的,但显然不是。也许这是文档中的错误。https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cosmosdb_account

最新更新