azure 使用BICEP更新不同资源组中的DNS区域

eqoofvh9  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(121)

我需要在BICEP部署期间更新DNS区域。该区域已存在于另一个资源组中。
我知道我应该能够拉取不同RG中的现有资源,但我尝试的方法不起作用。

方法一:

此报告错误
“资源的计算范围必须与Bicep文件的计算范围匹配,才能部署。此资源的作用域是根据分配给祖先资源“zone”的“scope”属性值计算的。您必须使用模块将资源部署到不同的作用域。bicep(BCP 165)”

resource zone 'Microsoft.Network/dnsZones@2023-07-01-preview' existing = {
  name: 'xxxx-xxxx.com'  
  scope:resourceGroup('xxxx-Bicep-xxxx-Deploy1')
}

resource record 'Microsoft.Network/dnsZones/CNAME@2023-07-01-preview' = {
  name: 'cname update'
  parent: zone
  properties: {
    TTL: 1200
    CNAMERecord:{
      cname:'record'
    }
  }  
}

所以我用了一个模块。

方法二:

此报告错误:
此表达式用于对“Microsoft.Network/dnsZones/CNAME”类型的“parent”属性的赋值,该属性需要一个可在部署开始时计算的值。getthezone的属性可以在开始时计算包括“name”.bicep(BCP 120)
文件1

module getthezone 'getdnszone.bicep' = {
  name: 'zoneget'
}

resource record 'Microsoft.Network/dnsZones/CNAME@2023-07-01-preview' = {
  name: 'cname update'
  parent: getthezone.outputs.thezone
  properties: {
    TTL: 1200
    CNAMERecord:{
      cname:'tuemp'
    }
  }  
}

文件2

resource zone 'Microsoft.Network/dnsZones@2023-07-01-preview' existing = {
  name: 'xxx-xxxx.xxx'  
  scope:resourceGroup('xxxx-Bicep-xxxx-Deploy1')
}

output thezone object = zone

如果我将文件2的输出更改为string并使用它,我会得到错误:
此表达式用于对“Microsoft.Network/dnsZones/CNAME”类型的“parent”属性的赋值,这需要一个可以在部署开始时计算的值。getthezone的属性可以在开始时计算包括“name”.bicep(BCP 120)
我错过了什么。如何使用BICEP更新另一个资源组中的DNS记录?

rur96b6h

rur96b6h1#

试试这个
文件1

module dothezone 'dothezone.bicep' = {
  name: 'zoneget'
  scope:resourceGroup('xxxx-Bicep-xxxx-Deploy1')
}

文件2

resource zone 'Microsoft.Network/dnsZones@2023-07-01-preview' existing = {
  name: 'xxx-xxxx.xxx'  
}

resource record 'Microsoft.Network/dnsZones/CNAME@2023-07-01-preview' = {
  name: 'cname update'
  parent: zone
  properties: {
    TTL: 1200
    CNAMERecord:{
      cname:'tuemp'
    }
  }  
}

相关问题