【发布时间】:2022-01-15 01:29:12
【问题描述】:
我们正在使用 terraform 通过 azurerm 提供程序构建我的 azure 资源。 我们在 terraform 运行期间注入了一个秘密,这个秘密可能会不时改变。 我们使用 azurerm_key_vault_secret 来存储机密和一个具有托管标识(具有对密钥保管库的读取权限)的函数应用,它接收这样的机密:
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 apply 并更改密码时,函数应用程序指向旧版本的密码。看来azurerm_key_vault_secret.my_secret.id 是在更新机密之前被读取的。
有人知道,我如何确保 function_app 将等待密钥的更新?
(是的,id 发生了变化,我也不喜欢它,但这就是提供者的工作方式。)
【问题讨论】:
-
如果您知道更新日志所需的时间,您可以引入延迟?
-
您必须自己使用External Data Source 编写这样的逻辑。
-
我没有提供答案,只是评论,因此可能会给出更好的答案。但你的问题并不新鲜。遗憾的是,并非 TF 中所有可能的资源都是同步的。有些是异步的,TF 不会等待它们完全完成配置或更新。
-
哦,另外请确保您使用的是最新的 TF 和 azure 提供程序。这可能是一个错误,并且可能已经修复。
-
我会等待一段时间,看看是否有人提供了更优雅的解决方案。如果这不会发生,我会接受。
标签: terraform azure-keyvault terraform-provider-azure