如何使用Azure ARM模板将VM部署到资源组“A”并引用资源组“B”中的现有密钥保管库?

时间:2018-02-09 18:37:45

标签: azure azure-resource-manager azure-keyvault arm-template

我已经在'网上寻求帮助了,但在这个具体问题上几乎没有。我的用例是我需要创建一个ARM模板,为一个资源组中的现有Azure密钥保管库添加访问策略,但将VM部署到第二个。

我可以部署虚拟机,为其分配托管服务标识(MSI),并将这些MSI添加到已存在的密钥保管库的accessPolicy中,所有这些都是相同的ARM模板。问题是,密钥库必须与我正在部署的虚拟机位于同一资源组中。

当我尝试使用与以前相同的密钥保管库将VM部署到不同的资源组时,我会遇到一些错误,具体取决于我如何构建ARM模板:

  1. 如果我将密钥保管库作为ARM模板中的资源引用,则会收到错误消息“名称(keyvault-name)已在使用中(代码:VaultAlreadyExists)

  2. 如果我只是尝试使用密钥保管库accessPolicy作为顶级资源,我会收到一条错误消息,指出“无法对嵌套资源执行请求的操作。未找到父资源keyvault-name”(代码: ParentResourceNotFound)

  3. 真的很令人费解,因为当我尝试第二种方法,我将虚拟机启动到与虚拟机相同的资源组时,它的工作正常。

    非常感谢任何帮助!

    干杯,

    -Maashu

1 个答案:

答案 0 :(得分:0)

您需要在嵌套模板中执行部署的一部分 - 然后使用该部署上的subscription / resourceGroup属性来匹配您要部署到的资源组(例如A或B)。

例如(假设您的KeyVault在resourceGroup B中): 1)将您的VM部署到A组(并创建MSI) 2)在同一模板中,在配置MSI之后,将一个嵌套部署添加到组B(其中KV是)

看到这个: https://docs.microsoft.com/en-us/azure/templates/microsoft.resources/deployments

请注意资源上的subscription / resourceGroup属性 - 如果需要,这将允许您部署到不同的resourceGroup甚至是不同的订阅。

另外:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-cross-resource-group-deployment

相关问题