Jump to content

Bicep Module Arrays und Outputs


StefanWe
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo,

ich baue gerade das ein oder andere größere Bicep Deployment. In einem Fall möchte ich gerne es etwas schöner lösen, komme aber nicht weiter.

 

Ich habe ein main.bicep Script, welches als targetscope = 'Subscription' läuft um meine Resource Gruppen zu erstellen. Alle anderen Ressourcen werden dann als Module aus dem main Script gestartet.

Ich lege im ersten Modul mehrere virtuelle Netze an. In diesem Script gebe ich über output die ResourceID der erstellten virtuellen Netze zurück.

Anschließend habe ich im main Script eine Variable als array erstellt

 

var Netzids = [
  VirtualNetworks.outputs.vnet2id
  VirtualNetworks.outputs.vnet3id
  VirtualNetworks.outputs.vnet4id
]

 

ich rufe nun das Modul für meine privaten DNS Zonen und deren vnet verlinkungen auf und übergebe das array als Parameter

module PrivateDNSZones 'privatedns.bicep' = {
  scope: resourceGroup(rg_000.name)
  name: 'Deployment-Private-DNS-Zones'
  params: {
    vnetlinkids: Netzids
  }
  dependsOn: [
    VirtualNetworks
  ]
}

 

Das funktioniert soweit ohne Probleme.

 

Allerdings nun in der for Schleife komme ich mit dem Namen nicht zurecht. Dieser muss ja eindeutig sein:

resource vnetlinkblob 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2024-06-01' = [for vnet in vnetlinkids: {
  name: 'link-${vnet}'
  parent: PrivatLinkBlob
  location: 'global'
  properties: {
    registrationEnabled: false
    virtualNetwork: {
      id: vnet
    }
  }
  
}]

 

In vnet steht allerdings die ID drin und nicht der Name vom Subnet. Damit läuft das Deployment auf die Nase. Ich glaube ansonsten würde es funktionieren.

 

Die Frage ist nun, wie komme ich an den Namen des vnets um für den Link einen eindeutigen Namen zu haben?

  • 2 Wochen später...
Geschrieben (bearbeitet)

Hab es übrigens recht einfach selber lösen können. In der resourceID ist ja ganz hinten der Name untergebracht. Dementsprechend kann man die Split Funktion in Verbindung mit concat verwenden.

 

name: concat('vnetlink-', split(vnet, '/')[8])

 

bearbeitet von StefanWe
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...