如何使用 Azure ARM 模板将 VM 部署到资源组“A”并引用资源组“B”中的现有密钥保管库?
Posted
技术标签:
【中文标题】如何使用 Azure ARM 模板将 VM 部署到资源组“A”并引用资源组“B”中的现有密钥保管库?【英文标题】:How can I use an Azure ARM template to deploy VMs into Resource Group "A" and reference an existing key vault in Resource Group "B"? 【发布时间】:2018-07-20 14:18:16 【问题描述】:我已经在网上寻求帮助,但在这个特定问题上几乎没有任何内容。我的用例是我需要创建一个 ARM 模板,将访问策略添加到一个资源组中的现有 Azure 密钥保管库,但将 VM 部署到第二个资源组中。
我可以部署 VM,为其分配托管服务标识 (MSI),并将这些 MSI 添加到已存在的密钥保管库的 accessPolicy 中,所有相同的 ARM 模板。问题是,密钥保管库必须与我正在部署的 VM 位于同一资源组中。
当我尝试使用与以前相同的密钥保管库将 VM 部署到不同的资源组时,我遇到了几个错误之一,具体取决于我如何构建 ARM 模板:
如果我将 Key Vault 作为 ARM 模板中的资源引用,我会收到错误消息“名称 (keyvault-name) 已在使用中(代码:VaultAlreadyExists)
如果我只是尝试将密钥保管库 accessPolicy 用作***资源,则会收到一条错误消息,指出“无法对嵌套资源执行请求的操作。未找到父资源密钥保管库名称”(代码: ParentResourceNotFound)
真的令人费解,因为当我尝试第二种方法时,我将虚拟机启动到与虚拟机相同的资源组中,它工作得很好。
非常感谢任何帮助!
干杯,
-马舒
【问题讨论】:
你能发布你的ARM模板吗?否则我很难弄清楚是什么问题 【参考方案1】:您需要在嵌套模板中执行部署的一部分 - 然后使用该部署上的订阅/资源组属性来匹配您要部署到的资源组(例如 A 或 B)。
例如(假设您的 KeyVault 位于资源组 B 中): 1) 将您的虚拟机部署到 A 组(并创建 MSI) 2) 在配置 MSI 后,在同一模板中将嵌套部署添加到组 B(KV 所在的位置)
看到这个: https://docs.microsoft.com/en-us/azure/templates/microsoft.resources/deployments
注意资源上的订阅/资源组属性 - 这将允许您部署到不同的资源组,如果需要,甚至可以部署到不同的订阅。
还有:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-cross-resource-group-deployment
【讨论】:
以上是关于如何使用 Azure ARM 模板将 VM 部署到资源组“A”并引用资源组“B”中的现有密钥保管库?的主要内容,如果未能解决你的问题,请参考以下文章