У нас есть шаблон Azure ARM, который добавляет настройки приложения для сайта Microsoft.Web/site.
"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')]"