【问题标题】:Updating Set of Values in ARM Templates Automatically自动更新 ARM 模板中的值集
【发布时间】:2020-01-15 02:09:09
【问题描述】:

我有一个 ARM 模板,我将使用它通过 Azure DevOps Pipeline 部署资源(在 Azure 门户中提到)。这些 ARM 模板是使用我的开发订阅创建的。如果我需要使用相同的 ARM 模板转移到生产环境,我需要手动更新 ARM 模板中的订阅 ID 等,然后运行相应的管道。有没有办法在 ARM 模板中自动化这个手动更新过程。

我已尝试使用 Azure DevOps 发布管道下提供的文件转换代理作业。但由于这些值在 ARM 模板的嵌套循环中可用,因此失败了。是否有任何 PowerShell 脚本适用于这个更新值的过程。

我不想手动更新 ARM 模板下的 id。相反,我想自动更新它。

【问题讨论】:

  • 我不确定 (encodeURIcomponent) 是如何工作的,但 replace() 函数可能与参数文件一起使用

标签: azure azure-devops devops arm-template


【解决方案1】:

您可以使用参数文件来代替 ARM 模板中的硬编码。对于 dev 和 prod,您可以拥有单独的文件,并且在部署时传递 ARM 模板以及所需的参数文件。

您可以使用 AKV (Azure Key Vault) 在参数文件中访问您的订阅详细信息

subscription().subscriptionid 将为您提供详细信息

【讨论】:

  • 您可以使用 AKV (Azure Key Vault) 访问您的订阅详细信息
  • 在 Parameter.json 中很少有这样的订阅 ID 不可用。 Parameter.json 下只有几个重要的变量可用。通常,在 Parameter.json 下不会填充资源 ID。在我的情况下,需要更新资源 ID 的一部分。例如值“x”:“id”:“/subscriptions/xxx-xxx-xxx-xxx/providers/Microsoft.Web/locations/centralus/managedApis/azuredatalake”
  • 在你的 ARM 模板变量“[concat('/subscriptions/',subscription().subscriptionid,'/resourceGroups/@{encodeURIComponent('TestResourceGroup')}/providers/Microsoft.数据工厂/工厂')]
【解决方案2】:

设置 Json 属性任务可能有助于设置具有特定值的属性。

首先在市场中搜索“设置 Json 属性”任务并为您的组织安装它。

然后您可以相应地设置属性路径和值。查看here了解详细用法

【讨论】:

  • @RJP 您是否尝试过使用设置 Json 属性任务?它对你有用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
相关资源
最近更新 更多