azure - 如何使用 Azure ARM 模板将 VM 部署到资源组 "A"并引用资源组 "B"中的现有 key 保管库?

标签 azure azure-resource-manager azure-keyvault azure-rm-template

我已经在网上寻求帮助,但几乎没有关于这个具体问题的信息。我的用例是,我需要创建一个 ARM 模板,将访问策略添加到一个资源组中的现有 Azure key 保管库,但将虚拟机部署到第二个资源组中。

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

当我尝试使用与以前相同的 key 保管库将虚拟机部署到不同的资源组时,我遇到了几个错误之一,具体取决于我构建 ARM 模板的方式:

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

  2. 如果我只是尝试使用 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

注意资源上的订阅/资源组属性 - 这将允许您部署到不同的资源组,甚至在需要时部署到不同的订阅。

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

关于azure - 如何使用 Azure ARM 模板将 VM 部署到资源组 "A"并引用资源组 "B"中的现有 key 保管库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48712135/

相关文章:

azure - Visual Studio Team Services 未部署某些文件

azure - 通过 eventhub 的 ARM 模板设置吞吐量单位

Azure 资源管理器 - 无法在访问策略中使用 Microsoft 应用服务部署 Keyvault

javascript - 获取 Azure 服务总线的详细信息

c# - 逻辑应用通过 HTTP 触发器调用的 Azure C# 函数 - 需要通过输入绑定(bind)引用 Blob 文件名

aws-cloudformation - 基础设施即代码的行业标准

azure - Azure 中每个区域中 EventGrid 、事件中心的可用区计数

azure - az cli : How to retrieve key vault secret value alone, 没有双引号?

使用 Key Vault 管理其 key 的 Azure 存储帐户

powershell - 使用 powershell 从 azure 存储导入发布设置文件