如何连接Azure DevOps变量以创建新变量

时间:2018-10-26 11:31:25

标签: azure azure-devops

我想从文本和其他变量(例如:

)连接我的Azure密钥库资源ID

/subscriptions/$(SubscriptionId)/resourceGroups/$(VaultRg)/providers/Microsoft.KeyVault/vaults/$(keyVaultName)

并将其放入kvid之类的新变量中。

但是,当我这样做时,我得到:

  

'SyntaxError:JSON中位置17处的意外令牌d',请确保它   遵循JavaScript对象符号(JSON)

这可能吗?有什么想法我可能做错了什么吗?

1 个答案:

答案 0 :(得分:0)

似乎您只是将占位符放入ARM模板。那是行不通的。没有任何隐藏机制可以在任意文件中以可变值静默替换占位符。您必须明确采取某种行动(通常是从市场上获得一项任务)来填写值。

但是,实现所需目标的正确方法是将这些变量作为parameters传递到ARM模板,并使用标准的ARM模板参数语法来引用它们。

例如: 在ARM模板中定义一个参数:

"parameters": {
  "keyVaultName": {
    "type": "string",
    "defaultValue": "DefaultKV"
  }
}

然后引用参数:

[concat('/subscriptions/', parameters('SubscriptionId'), '/resourceGroups/', parameters('VaultRg'), '/providers/Microsoft.KeyVault/vaults/', parameters(keyVaultName))]

然后,当您使用Resource Group Deployment任务时,请使用您选择的值覆盖这些参数。

  

覆盖模板参数
  (可选)要在网格中查看模板参数,请单击“替代参数”文本框旁边的“…”。此功能要求在源上启用CORS规则。如果模板位于Azure存储Blob中,请参考此以启用CORS。或在文本框中键入要覆盖的模板参数。例,   –storageName fabrikam –adminUsername $(vmusername)-adminPassword $(密码)–azureKeyVaultName $(fabrikamFibre)。

     

如果您使用的参数值包含多个单词,即使您使用变量传递它们,也请用引号引起来。例如,-name“参数值” -name2“ $(变量)”   要覆盖对象类型参数,请使用字符串化的JSON对象。例如,-options [“ option1”] -map {“ key1”:“ value1”}。