首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Terraform不等待azurerm_key_vault_secret.xyz.id的更新

Terraform不等待azurerm_key_vault_secret.xyz.id的更新
EN

Stack Overflow用户
提问于 2021-12-10 10:31:07
回答 1查看 865关注 0票数 1

我们使用terraform与azurerm提供者一起构建我的蔚蓝资源。我们在地形运行过程中注入了一个秘密,这个秘密可能会不时改变。我们使用azurerm_key_vault_secret存储秘密,使用带有托管标识的函数应用程序(可以读取密钥库的权限)接收秘密,如下所示:

代码语言:javascript
运行
复制
resource "azurerm_key_vault_secret" "my_secret" {
  name         = "my-secret"
  value        = var.my_secret
  key_vault_id = azurerm_key_vault.default.id
}

resource "azurerm_function_app" "app" {
  name         = "..."
  app_settings = {
      MySecret = "@Microsoft.KeyVault(SecretUri=${azurerm_key_vault_secret.my_secret.id})"
  }
  identity {
    type = "SystemAssigned"
  }
  ...
}

当我运行terraform应用程序并更改秘密时,函数应用程序指向这个秘密的旧版本。azurerm_key_vault_secret.my_secret.id似乎是在更新秘密之前被阅读的。

有没有人知道,我如何确保function_app会等待秘密的更新?

(是的,id会改变,我也不喜欢它,但这就是提供者的工作方式。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 13:51:55

当您正在更新密钥库机密时,更改将由密钥库UI处理。因此Terraform不会检测到azurerm_key_vault_secret.example.id上的更改,因此引用也不会被修改。

作为解决办法,您可以使用数据源对同一个密钥库秘密,并在函数-app中提供它,如下面的代码所示,这样就可以从数据源读取密钥库秘密中所做的所有更改,并相应地应用这些更改:

代码语言:javascript
运行
复制
  resource "azurerm_key_vault_secret" "example" {
  name         = "functionappsecret"
  value        = "changedpassword"
  key_vault_id = azurerm_key_vault.example.id
}

data "azurerm_key_vault_secret" "secret" {
  name="functionappsecret"
  key_vault_id = azurerm_key_vault.example.id
  depends_on = [
    azurerm_key_vault_secret.example
  ]
}
resource "azurerm_function_app" "example" {
  name                       = "ansuman-azure-functions"
  location                   = azurerm_resource_group.example.location
  resource_group_name        = azurerm_resource_group.example.name
  app_service_plan_id        = azurerm_app_service_plan.example.id
  storage_account_name       = azurerm_storage_account.example.name
  storage_account_access_key = azurerm_storage_account.example.primary_access_key
  app_settings = {
      MySecret = "@Microsoft.KeyVault(SecretUri=${data.azurerm_key_vault_secret.secret.id})"
  }

  identity {
    type="SystemAssigned"
  }
}

Ouptut:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70303087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档