我已经在网上寻求帮助,但几乎没有关于这个具体问题的信息。我的用例是,我需要创建一个 ARM 模板,将访问策略添加到一个资源组中的现有 Azure key 保管库,但将虚拟机部署到第二个资源组中。
我可以部署虚拟机,为其分配托管服务标识 (MSI),并将这些 MSI 添加到已存在的 key 保管库的 accessPolicy 中,所有这些都是相同的 ARM 模板。问题是, key 保管库必须与我正在部署的虚拟机位于同一资源组中。
当我尝试使用与以前相同的 key 保管库将虚拟机部署到不同的资源组时,我遇到了几个错误之一,具体取决于我构建 ARM 模板的方式:
如果我在 ARM 模板中将 Key Vault 引用为资源,则会收到错误消息“名称 (keyvault-name) 已在使用中(代码:VaultAlreadyExists)
如果我只是尝试使用 key 保管库访问策略作为顶级资源,则会收到一条错误消息,指出“无法对嵌套资源执行请求的操作。未找到父资源 keyvault-name”(代码: ParentResourceNotFound)
真的令人费解,因为当我尝试第二种方法(将虚拟机启动到与虚拟机相同的资源组中)时,它工作得很好。
非常感谢任何帮助!
干杯,
-马舒
最佳答案
您需要在嵌套模板中执行部署的一部分 - 然后使用该部署上的订阅/资源组属性来匹配您要部署到的资源组(例如 A 或 B)。
例如(假设您的 KeyVault 位于资源组 B 中): 1) 将虚拟机部署到 A 组(并创建 MSI) 2) 在配置 MSI 后,在同一模板中将嵌套部署添加到 B 组(其中 KV 所在)
看这个: https://learn.microsoft.com/en-us/azure/templates/microsoft.resources/deployments
注意资源上的订阅/资源组属性 - 这将允许您部署到不同的资源组,甚至在需要时部署到不同的订阅。
关于azure - 如何使用 Azure ARM 模板将 VM 部署到资源组 "A"并引用资源组 "B"中的现有 key 保管库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48712135/