将Azure RM模板重新部署到其他资源组/位置

时间:2018-01-25 23:04:18

标签: azure templates deployment

我想在美国西部创建一个包含几个虚拟机的资源组。之后,我可以下载描述此配置的模板。如何使用它将此配置部署到美国东部?该模板包含Azure在创建时分配的公共IP地址等内容。如果我只是尝试将模板部署到美国东部以及新资源组中,那么它将失败并且"部署模板验证失败:'在资源上检测到循环依赖关系:' / subscriptions / da98df59-9115- 4751-bc96-06d80c1fe88e / resourceGroups /互联星空东-US /供应商/ Microsoft.Network / networkInterfaces / ubuntu01342&#39 ;.有关使用详情,请参阅https://aka.ms/arm-template ...。'。 (代码:InvalidTemplate)"

我认为必须先编辑模板,然后才能将资源部署到其他区域。不幸的是,我无法找到有关如何操作的信息(要删除的内容和要留下的内容)。我认为你需要" sysprep"就像你试图概括虚拟机映像一样,遗憾的是我找不到如何操作的信息。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

我创建了几个ARM模板。有时我只是用门户创建一些东西然后导出de JSon定义。与许多自动生成的东西一样,导出需要清理才能真正重复使用。

这需要一些时间,但是可行和推荐。现在我几乎从不直接从门户部署东西,因为我更喜欢每次需要时都有一个定义来重新创建环境。

我申请的步骤是:

  • 删除所有不必要的内容。某些资源是使用默认值创建的,因为Azure会创建它们,但您并不需要。
  • 参数化所有取决于您的部署,VM大小,VNET ......
  • 的内容

我建议https://github.com/Azure/azure-quickstart-templates项目查看有关如何创建模板的实例。另一个帮助我学习这个ARM的工具是它的Visual Studio 2017.它包含一个用于创建ARM项目的模板。在那里,您有一个很好的JSon模板可视化,以及一种插入空白资源来完全自定义它们的方法。

最后,您将依赖每个资源的MS文档,例如https://docs.microsoft.com/en-us/azure/templates/microsoft.network/networkinterfaces注意URL如何包含基础部分,然后是每个资源的模板命名空间。

从您的特定示例看起来,对已创建资源的引用似乎导致了问题。

例如,在使用位置时,我使用

之类的东西
"location": "[resourceGroup().location]"

将整个模板约束到当前部署位置或

"location": "[parameters('location')]"

如果我需要指定不同的东西

希望有所帮助!