【发布时间】:2020-11-29 05:37:48
【问题描述】:
总之,我特别希望使用两个不同的来源来维护我的天蓝色功能的应用设置,
- 第一个来源是自定义设置的映射,将手动维护或通过可能几乎没有变化的代码维护
- 应用设置映射的第二个来源是之前代码中的密钥 uri,这使得 azure 函数可以使用密钥引用作为配置值。
我正在尝试自动化从 keyvault 动态检索机密子集并将其合并到我在代码中定义的自定义地图应用程序设置的过程。
问题:
我的理想世界是我更新列表secretKeys 和地图appSettingsSecretsMap 得到动态创建,然后在其appsettings 中由资源创建resource "azurerm_function_app" "functionApp_workerFunctions" 使用。有谁知道我如何更动态地实现这一点?
我的完整代码如下:
variable "secretKeys" {
type = list(string)
default = [
"TestDbPassword",
"TestDbUserId"]
}
data "azurerm_key_vault" "keyvault" {
name = "source-keyvault"
resource_group_name = "source-keyvault-rg"
}
data "azurerm_key_vault_secret" "kvSecrets" {
for_each = toset(var.secretKeys)
name = each.key
key_vault_id = data.azurerm_key_vault.keyvault.id
}
# Testing Access to secret
output "TestDbPassword" {
value = data.azurerm_key_vault_secret.kvSecrets["TestDbPassword"].id
}
#https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references
variabe "appSettingsSecretsMap" {
type = map
default = {
DBPassword = "@Microsoft.KeyVault(SecretUri=${data.azurerm_key_vault_secret.kvSecrets["TestDbPassword"].id})"
DBUserId = "@Microsoft.KeyVault(SecretUri=${data.azurerm_key_vault_secret.kvSecrets["TestDbUserId"].id})"
}
}
# Reference for appSettings https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings
variable "appSettingsCustomMap" {
type = map
default = {
WEBSITE_RUN_FROM_PACKAGE = ""
FUNCTIONS_WORKER_RUNTIME = ""
APPINSIGHTS_INSTRUMENTATIONKEY = ""
#FUNCTIONS_EXTENSION_VERSION = "~1"
}
}
resource "azurerm_function_app" "functionApp_workerFunctions" {
name = "worker-function-${var.ENVIRONMENT}"
location = "XYZ-Example"
resource_group_name = "XYZ-Example"
app_service_plan_id = "XYZ-Example"
storage_account_name = "XYZ-Example"
storage_account_access_key = "XYZ-Example"
app_settings = merge(var.appSettingsMap, var.appSettingsSecretsMap)
}
【问题讨论】:
标签: azure function terraform settings azure-keyvault