【发布时间】:2020-06-07 01:59:23
【问题描述】:
我当前的设置将环境特定的应用程序设置存储在 ARM 参数文件的一个部分中。因此,ARM 参数文件的结构如下所示:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"deploymentSpecificValues": {
"value": {
"subscriptionId": "0ce7bbfc-9fa4-46b5-8f38-303db907fd89",
"environmentName": "dev",
"azureBlobUri": "https://mytestblob.blob.core.windows.net/"
}
},
"regions": {
"value": [
{
"location": "West US",
"additionalRegionData": "abc"
},
{
"location": "West US 2",
"additionalRegionData": "pqr"
}
]
},
"webAppInfo": {
"value": {
"appName": "mytestapp",
"appSettings": {
"SqlServerConnectionString": "mySqlServerConnectionString",
"Service1Url": "https://www.service1url.com",
"Service2Url": "https://www.service2url.com"
}
}
},
"sku": {
"value": "Dynamic"
}
}
}
请注意位于上述代码的 webAppInfo 节点下的 appSettings。每个环境都有它自己的参数文件,就像上面一样。我相信 appsettings 的数量会随着时间的推移而不断增长,并且可能会使参数文件变得混乱。
问题:
- 这是管理应用设置的最佳做法吗?
- 如果上述问题的答案是否定的,那么在这种情况下处理应用设置的最佳做法是什么?
【问题讨论】:
-
这种方法一点也不差。另一种方法是使用 Terraform 或 Ansible 等 IaC 工具,它们为您提供更多的基础架构和配置管理结构。例如,在 Terraform 中,您可以将工作空间用于不同的环境,并且只有一个参数文件来存储不同环境的每个参数的不同值,并在 terraform 文件中使用查找来获取该环境的该参数的值。您还可以使用此类工具获得其他功能。根据经验,Terraform 和 ARM 可以很好地协同工作。
标签: azure configuration azure-web-app-service azure-resource-manager