我想从文本和其他变量连接Azure密钥库资源ID,如:
/subscriptions/$(SubscriptionId)/resourceGroups/$(VaultRg)/providers/Microsoft.KeyVault/vaults/$(keyVaultName)
并将其放入像kvid
这样的新变量中。
然而,当我这样做时,我得到:
'SyntaxError:位置17处JSON中的意外标记d‘,确保它遵循JavaScript对象表示法(JSON)
这是可能的吗?你知道我哪里做错了什么吗?
发布于 2018-10-27 09:30:10
看起来你只是把一个占位符放进你的手臂模板。这是行不通的;没有隐藏的机制可以在任意文件中使用变量值默默地替换占位符。您必须显式地采取某种行动(通常使用来自市场的任务)来填充值。
但是,实现目标的正确方法是将这些变量作为参数传递给ARM模板,并使用标准的ARM模板参数语法来引用它们。
例:在ARM模板中定义一个参数:
"parameters": {
"keyVaultName": {
"type": "string",
"defaultValue": "DefaultKV"
}
}
然后参考参数:
[concat('/subscriptions/', parameters('SubscriptionId'), '/resourceGroups/', parameters('VaultRg'), '/providers/Microsoft.KeyVault/vaults/', parameters(keyVaultName))]
然后,当使用资源组部署任务时,用所选的值覆盖参数。
覆盖模板参数 (可选)要查看网格中的模板参数,请单击“…”接下来重写参数文本框。此功能要求在源端启用CORS规则。如果模板在Azure存储blob中,请参考它来启用CORS。或在textbox中键入要重写的模板参数。例如,-storageName fabrikam -adminUsername $(vmusername) -adminPassword $(密码)-azureKeyVaultName $(fabrikamFibre)。 如果您使用的参数值有多个单词,则将它们用引号括起来,即使您使用变量传递它们。例如,为了覆盖对象类型参数,-name“参数值”-name2 "$(var)“使用字符串化的JSON对象。例如,-options "option1“-map {"key1":"value1”}。
https://stackoverflow.com/questions/53007796
复制相似问题