一个用于MySQL和Postgresql的Azure数据库的ARM模板?

问题描述 投票:-1回答:1

我目前正在尝试编写一个ARM模板,该模板应该在deploy.json文件中包含MySQL和PostgreSQL,然后有两个单独的参数文件,一个用于postgreSQL,一个用于MySQL。

我已经开始使用模板,但它不能按我想要的方式工作,我无法弄清楚原因。在模板中,我有Microsoft.DBforMySQL / servers和Microsoft.DBforPostgreSQL / servers。

"resources": [
    {
      "type": "Microsoft.DBforMySQL/servers",
      "apiVersion": "2017-12-01",
      "name": 
      "location": 
      "sku": {
        "name": 
      },
      "properties": {
            "version": 
            "administratorLogin": 
            "administratorLoginPassword": 
            "createMode": 
            "sslEnforcement": 
            "storageProfile": {
                "storageGb": 
                "backupRetentionDays": 
                "geoRedundantBackup": 
            }
      }
    },
    {
        "type": "Microsoft.DBforPostgreSQL/servers",
        "apiVersion": "2017-12-01",
        "name": 
        "location": 
        "sku": {
          "name": 
        },
        "properties": {
              "apiVersion": 
              "administratorLogin": 
              "administratorLoginPassword":
              "createMode": 
              "sslEnforcement": 
              "storageProfile": {
                  "storageGb": 
                  "backupRetentionDays":
                  "geoRedundantBackup": 
        }
    },

我想要实现的输出是,当您使用例如“Postgre-parameter”文件时,它应该部署PostgreSQL数据库并读取资源“Microsoft.DBforPostgreSQL / servers”,反之亦然。这可能还是我应该停止尝试?

json azure azure-resource-manager
1个回答
1
投票

它是可能的,但不是神奇的(你似乎认为应该这样做)。你必须为它编码。最简单的方法是为资源添加条件:

"resources": [
    {
        "condition": "[equals(parameters('postgres'), true)]"
        ...
    },
    {
        "condition": "[equals(parameters('mysql'), true)]"
        ...
    },
]

您还必须将参数中的值映射到资源。

语法:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates

© www.soinside.com 2019 - 2024. All rights reserved.