用参数名称中的空格覆盖参数

时间:2019-10-30 16:02:33

标签: azure-pipelines

Azure Resource Group Deployment task中,我可以覆盖一个参数,该参数的名称中有空格吗?

我跟随this guide创建了Azure资源组部署项目。在该项目中,我可以创建名称中带有空格的参数,并通过Visual Studio成功部署它。

azuredeploy.json

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "My easy to read parameter": {
      "type": "string",
      "defaultValue": "hello world"
    }
  },
  "resources": [
    {
      "name": "[parameters('My easy to read parameter')]",
      "type": "Microsoft.Storage/storageAccounts",
      "location": "[resourceGroup().location]",
      "apiVersion": "2016-01-01",
      "sku": {
        "name": "[parameters('StorageType')]"
      },
      "dependsOn": [],
      "tags": {
        "displayName": "MyTag"
      },
      "kind": "Storage"
    }
  ]
}

看来我可以使用此参数覆盖参数: overrideParameters: '-myNotSoEasyToReadParameter integration-webfarm' source

如何在带有空格的参数上执行此操作?

overrideParameters: '-My easy to read parameter integration-webfarm'

1 个答案:

答案 0 :(得分:0)

答案是

表示可以覆盖此特殊参数名称My easy to read parameter。并且表示您使用的方法不正确。

首先,hello world是无效值。由于您定义的是Microsoft.Storage/storageAccounts类型,因此不允许您使用小写字母和数字以外的其他字符,包括空格。

要覆盖参数名My easy to read parameter,您不能在任务配置中直接覆盖它:

enter image description here

带有空格的名称无法被任务识别。由于存在空格,此任务无法将此特殊名称视为一个完整的字符串,并将尝试对其进行解析。然后您将收到如下错误信息:

enter image description here

即使使用双引号也不起作用。


正确且成功的覆盖方法是使用覆盖参数json文件。

创建一个新的参数json文件,然后指定要覆盖的参数名称和值。

例如:

(1)。这是我的模板json文件,其参数名称为My easy to read parameter,值为merlinliang

enter image description here

(2)。。现在,创建另一个 parameter json文件。在其中指定了一个新值merlinoverride

enter image description here

(3)。在ARM部署任务配置中,如下配置:

enter image description here

您可以看到该名称已成功覆盖:

enter image description here