在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'
答案 0 :(得分:0)
答案是是和否。
是表示可以覆盖此特殊参数名称My easy to read parameter
。并且否表示您使用的方法不正确。
首先,hello world
是无效值。由于您定义的是Microsoft.Storage/storageAccounts
类型,因此不允许您使用小写字母和数字以外的其他字符,包括空格。
要覆盖参数名My easy to read parameter
,您不能在任务配置中直接覆盖它:
带有空格的名称无法被任务识别。由于存在空格,此任务无法将此特殊名称视为一个完整的字符串,并将尝试对其进行解析。然后您将收到如下错误信息:
即使使用双引号也不起作用。
正确且成功的覆盖方法是使用覆盖参数json文件。
创建一个新的参数json文件,然后指定要覆盖的参数名称和值。
例如:
(1)。这是我的模板json文件,其参数名称为My easy to read parameter
,值为merlinliang
:
(2)。。现在,创建另一个 parameter json文件。在其中指定了一个新值merlinoverride
:
(3)。在ARM部署任务配置中,如下配置:
您可以看到该名称已成功覆盖: