You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Bicep中无法为VM模块添加灾难恢复属性求助

问题分析与解决

核心错误点

你当前的配置存在两处关键问题:

  1. 语法不符合Bicep规范:
    • 错误使用数组[]包裹配置,灾难恢复的属性集合应该用对象{}定义
    • 键名包含空格(如recovery vault Name),不符合Bicep标识符规则,需改为驼峰式(如recoveryVaultName)
    • 字符串值未添加单/双引号,Bicep中字符串必须用引号包裹
  2. 概念误解:
    Azure Bicep无法直接在VM资源或模块内通过类似ARM的简化数组配置灾难恢复,必须单独定义Azure Site Recovery的专属资源来关联VM与恢复服务体系。

修正后的配置示例

1. 定义正确的参数结构

如果是自定义VM模块,先定义规范的灾难恢复参数:

param disasterRecovery object = {
  recoveryVaultName: 'myrsv'
  targetAvailabilitySetId: '/subscriptions/{你的订阅ID}/resourceGroups/mygroup/providers/Microsoft.Compute/availabilitySets/myavset'
  targetResourceGroup: 'mygroup'
  cacheStorageAccountName: 'mystorage'
  replicationPolicyId: '/subscriptions/{你的订阅ID}/resourceGroups/{vault所在资源组}/providers/Microsoft.RecoveryServices/vaults/myrsv/replicationPolicies/{你的复制策略名}'
}

2. 部署VM并关联灾难恢复

在Bicep中部署VM后,需要创建replicationProtectedItem资源来完成灾难恢复配置:

// 部署VM(示例基础配置,需补充你的VM完整参数)
resource vm 'Microsoft.Compute/virtualMachines@2023-07-01' = {
  name: 'myvm'
  location: 'eastus'
  // 其他VM配置:硬件规格、OS磁盘、网络等...
}

// 引用已存在的恢复服务Vault
resource recoveryVault 'Microsoft.RecoveryServices/vaults@2023-04-01' existing = {
  name: disasterRecovery.recoveryVaultName
}

// 引用已存在的缓存存储账户
resource cacheStorageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = {
  name: disasterRecovery.cacheStorageAccountName
}

// 引用已存在的复制保护容器(需根据你的ASR环境调整名称格式)
resource protectionContainer 'Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers@2023-04-01' existing = {
  parent: recoveryVault
  name: 'eastus;mygroup' // 格式:源位置;源资源组
}

// 创建复制保护项,将VM加入灾难恢复
resource replicationProtectedItem 'Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems@2023-04-01' = {
  parent: protectionContainer
  name: vm.name
  properties: {
    policyId: disasterRecovery.replicationPolicyId
    providerSpecificDetails: {
      instanceType: 'A2A' // 若为Azure到Azure灾备,其他场景如VMware到Azure需改为对应类型
      targetAvailabilitySetId: disasterRecovery.targetAvailabilitySetId
      cacheStorageAccountId: cacheStorageAccount.id
      recoveryResourceGroupId: resourceGroup(disasterRecovery.targetResourceGroup).id
    }
  }
}

注意事项

  • 确保恢复服务Vault、复制策略、目标可用性集、缓存存储账户已提前创建,或在Bicep中添加对应的部署逻辑
  • instanceType需根据你的灾备场景调整:Azure到Azure用A2A,VMware到Azure用VMwareVirtualMachine等

内容的提问来源于stack exchange,提问作者Satish B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:50:28