我试图创建访问策略KV在不同的状态,但需要APIM身份,用户管理的身份它正在成功地创建访问策略,并且在下一次运行时再次创建,因为它已经处于terraform状态,但会再次重新创建它
holgip5t1#
我们多次尝试配置azurerm_key_vault_access_policy,但状态不允许每次使用更新的Azure提供程序配置新策略。在这里,我试图复制场景,并检查我是否也会从我这边得到错误,但它没有。我的main.tf文件:
provider "azurerm" { features { key_vault { purge_soft_delete_on_destroy = true recover_soft_deleted_key_vaults = true } } } data "azurerm_client_config" "current" {} resource "azurerm_resource_group" "example" { name = "demorgvk" location = "East US" } resource "azuread_application" "example" { display_name = "demoappvk" } resource "azuread_service_principal" "example" { application_id = azuread_application.example.application_id app_role_assignment_required = false } resource "azurerm_key_vault" "example" { name = "examplekeyvaultvk" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name enabled_for_disk_encryption = true tenant_id = data.azurerm_client_config.current.tenant_id soft_delete_retention_days = 7 purge_protection_enabled = false sku_name = "standard" access_policy { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id key_permissions = [ "Get", ] secret_permissions = [ "Get", ] storage_permissions = [ "Get", ] } } resource "azurerm_key_vault_access_policy" "example-principal" { key_vault_id = azurerm_key_vault.example.id tenant_id = data.azurerm_client_config.current.tenant_id object_id = azuread_service_principal.example.object_id key_permissions = [ "Get", "List", "Encrypt", "Decrypt" ] }
您所面临的错误可能有一些原因。1.状态文件可能已损坏。1.检查资源组的权限,访问策略和运行terraform的服务主体,并确保我们有唯一的访问策略名称。1.使用下面提到的语法,每次我们发出运行命令时,资源都将被提供。
**生命周期{
prevent_destroy = true}**这可以防止资源的破坏。
输出:
第1次运行terraform_plan:
terraform_plan
第1次运行terraform_apply:
terraform_apply
第2次运行**terraform_plan**
另请检查状态文件中保存的azurerm_key_vault_access_policy在执行运行时不应修改。
通过遵循上述所有步骤,我们可以克服在每次运行时重新配置资源的问题。
1条答案
按热度按时间holgip5t1#
我们多次尝试配置azurerm_key_vault_access_policy,但状态不允许每次使用更新的Azure提供程序配置新策略。
在这里,我试图复制场景,并检查我是否也会从我这边得到错误,但它没有。
我的main.tf文件:
您所面临的错误可能有一些原因。
1.状态文件可能已损坏。
1.检查资源组的权限,访问策略和运行terraform的服务主体,并确保我们有唯一的访问策略名称。
1.使用下面提到的语法,每次我们发出运行命令时,资源都将被提供。
**生命周期{
prevent_destroy = true
}**
这可以防止资源的破坏。
输出:
第1次运行
terraform_plan
:第1次运行
terraform_apply
:第2次运行**
terraform_plan
**另请检查状态文件中保存的azurerm_key_vault_access_policy在执行运行时不应修改。
通过遵循上述所有步骤,我们可以克服在每次运行时重新配置资源的问题。