如何使用 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”中的现有密钥保管库?的主要内容,如果未能解决你的问题,请参考以下文章

Java调用ARM模板执行Azure Rest建立VM过程

如何在 Azure Arm 模板中使用粘性暂存槽

如何使用 arm 模板更新 azure appsettings

ARM模式下使用自定义镜像部署VM

是否可以使用 ARM 模板重新部署 Azure 数据工厂

Azure ARM-DSC VM配置