我们有一个 Azure ARM 模板,它正在为 Microsoft.Web/site 添加 appsettings。
"resources": [
{
"apiVersion": "2016-03-01",
"name": "myazurefunction",
"type": "Microsoft.Web/sites",
"properties": {
"name": "myazurefunction",
"siteConfig": {
"appSettings": [
{
"name": "MY_SERVICE_URL",
"value": "[concat('https://myservice-', parameters('env'), '.domain.ca')]"
}
]
}
}
}
]
我们还有四个parameters.environment.json
文件。例如,这是 的内容parameters.dev.json
。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01...",
"contentVersion": "1.0.0.0",
"parameters": {
"env": {
"value": "dev"
}
}
}
模板及其参数有利于约定而不是配置。这在大多数情况下运行良好,并导致以下MY_SERVICE_URL
值。
- https://myservice-dev.domain.ca
- https://myservice-qa.domain.ca
- https://myservice-ci.domain.ca
- https://myservice-prod.domain.ca
问题是我们想打破dev
环境的惯例。也就是说,我们希望它MY_SERVICE_URL
看起来像这样:
我们如何配置 ARM 模板以打破仅针对一种环境的约定?
我的第一个虽然是使用这样的条件,但这样的 ARM 函数似乎不可用。
"name": "MY_SERVICE_URL",
"value": "[parameters('env') -eq 'dev'
? 'https://abc123.foo.bar.baz.ca'
: concat('https://myservice-', parameters('env'), '.domain.ca')]"