我已经在'网上寻求帮助了,但在这个具体问题上几乎没有。我的用例是我需要创建一个ARM模板,为一个资源组中的现有Azure密钥保管库添加访问策略,但将VM部署到第二个。
我可以部署虚拟机,为其分配托管服务标识(MSI),并将这些MSI添加到已存在的密钥保管库的accessPolicy中,所有这些都是相同的ARM模板。问题是,密钥库必须与我正在部署的虚拟机位于同一资源组中。
当我尝试使用与以前相同的密钥保管库将VM部署到不同的资源组时,我会遇到一些错误,具体取决于我如何构建ARM模板:
如果我将密钥保管库作为ARM模板中的资源引用,则会收到错误消息“名称(keyvault-name)已在使用中(代码:VaultAlreadyExists)
如果我只是尝试使用密钥保管库accessPolicy作为顶级资源,我会收到一条错误消息,指出“无法对嵌套资源执行请求的操作。未找到父资源keyvault-name”(代码: ParentResourceNotFound)
真的很令人费解,因为当我尝试第二种方法,我将虚拟机启动到与虚拟机相同的资源组时,它的工作正常。
非常感谢任何帮助!
干杯,
-Maashu
答案 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甚至是不同的订阅。