azure - 在 ARM 模板中有条件地设置应用程序设置值

标签 azure azure-web-app-service azure-rm-template

我们有一个 Azure ARM 模板,它正在为 Microsoft.Web/站点添加应用程序设置。

"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 值。

问题是我们想要打破 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')]"

最佳答案

只需创建一个依赖于参数的变量:

"parameters": {
...
"DeploymentType": {
    "type": "string",
    "allowedValues": [
        "Dev",
        "Prod"
    ]
}
...
"variables": {
    "Dev": "https://some_service-ci.domain.com",
    "Prod": "https://abc123.foo.bar.baz.com",
    "DeploymentVariable": "[variables(parameters('DeploymentType'))]",
...
"appSettings": [
    "name": "MY_SERVICE_URL", 
    "value": "[variables('DeploymentVariable')]"
]
...

好的,那么这是如何工作的呢?您传入参数“DeploymentType”,它可以是 PROD 或 DEV。如果您传递 DEV "DeploymentVariable": "[variables(parameters('DeploymentType'))]", - 其计算结果为 "[variables('Dev')]"并获取 "Dev": "https://some_service-ci.domain.com",

的值

关于azure - 在 ARM 模板中有条件地设置应用程序设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42678109/

相关文章:

azure - 具有自定义域 DNS 配置的 Azure 应用服务

azure - 将多个 Bicep 模板发布到容器注册表

azure - 在 ARM 模板中应用 Azure Key Vault 无 self 权限属性

azure - 如何在 Azure 中的新 VM 上公开网站?

azure - 为什么 Azure AD B2C 不接受 Office 365 电子邮件地址?

azure - 名称服务器 ns3-02.azure-dns.org。应该采用正确的格式

azure - 动态创建ARM参数名称

r - 尝试使用 R 连接到 Azure 表时出现 HTTP/1.1 400 错误

azure - 为什么我的 IdentityServer4 应用程序无法在 Azure WebApp 托管环境中启动?

azure - Azure 应用程序服务的构建日志在哪里?