【问题标题】:Azure ARM template keyvault override in Azure DevOpsAzure DevOps 中的 Azure ARM 模板密钥库覆盖
【发布时间】:2019-03-27 12:51:03
【问题描述】:

如何在 Azure DevOps 中覆盖 ARM 模板 Azure keyvault 参考?我有 ARM 模板,其参考如下:

"KeyVaultSecret": {
  "reference": {
    "keyVault": {
      "id": "/subscriptions/214124-1241-526-645-lele/resourceGroups/KEYVAULT-RG/providers/Microsoft.KeyVault/vaults/KeyVault"
    },
    "secretName": "VerySecret"
  }
}

但在某些情况下,我想覆盖 id 和/或 secretName。

【问题讨论】:

  • 使用 convertfrom-json 和 convertto-json cmdlet 来处理模板文件...
  • 我的最终想法是在 Azure DevOps 发布管道中覆盖它,因此进行转换听起来像是超出范围的事情。
  • 别忘了您可以在 Azure DevOps 管道中运行自定义 PowerShell 脚本;-)
  • 我可以,但我喜欢在 ARM 模板中保留一些内容。因此需要覆盖部分 ARM 模板参数
  • 您是使用 Azure Devops 还是要手动部署 ARM 模板?

标签: azure powershell azure-devops azure-resource-manager arm-template


【解决方案1】:

我们使用 powershell 将参数模板作为 JSON 对象 $Template 读入,然后将 ID 值替换为适当的值,并将更新后的对象写入 Temp 文件。

$Template["KeyVaultParm"].reference.keyvault.id = "<NewReferenceID>"

这允许我们在 Prod/Dev 中使用相同的模板,并在使用相同的 ARM 模板/参数文件时拥有不同的 KeyVault。

【讨论】:

  • 我宁愿少用powershell,多用内置函数。
  • 如果可能,请提供完整的代码sn-p。
【解决方案2】:

您始终可以使用嵌套模板来执行此操作,只需提供一个带值的参数,然后使用嵌套模板来调用它。 Here's 使用嵌套模板来获取 KV 值。您可以轻松地将我链接到的硬编码值替换为参数或表达式,这将允许您做您需要的事情。

您可能会实施类似“开关”的方法来根据资源组名称确定所需的值。

【讨论】:

  • 这仍然不允许我将 keyvault id 作为参数。或者在 Azure DevOps 中覆盖它。
  • 确实如此,阅读答案,如果您有任何问题 - 回复我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
相关资源
最近更新 更多