1

Ich habe eine ARM-Vorlage, die eine beliebige Anzahl von Azure webapps unter Verwendung des copy Konstrukt erzeugt, wie so (nicht relevante Abschnitte entfernt):Wie erzeuge ich Traffic Manager-Endpunkte in einer ARM-Vorlage dynamisch?

{ 
    "parameters": { 
    "numWebsites": { 
     "type": "int", 
     "defaultValue": 2 
    } 
    }, 
    "resources": [ 
    "name": "[concat('webapp-', copyIndex()]", 
    "type": "Microsoft.Web/sites", 
    "copy": { 
     "name": "websitescopy", 
     "count": "[parameters('numWebsites')]" 
    } 
    ] 
} 

Ich würde auch ein Verkehrsmanagerprofil dergleichen, mit einem erstellen Endpunkt für jede der erstellten Websites. Es scheint jedoch keine Möglichkeit zu geben, copy im Parameter endpoints der Traffic Manager-Ressource zu verwenden. Alle Beispiele, die ich gesehen habe, haben die Endpunkte explicitly listed out, aber ich weiß nicht, wie viele Webapps im Voraus erstellt werden, so dass es für mich nicht funktioniert.

Wie kann ich die Endpunkte in meiner Vorlage dynamisch generieren? Ich habe versucht, eine copy Anweisung in der trafficManagerProfiles Ressource zu verwenden, aber das erstellt mehrere Profile mit jeweils einem einzelnen Endpunkt.

Antwort

1

Hier ist ein Beispiel für das Erstellen eines externen Endpunkts als "untergeordnete Ressource", das Profil wird separat ohne Endpunkte erstellt, und dann fügt diese Ressource den Endpunkt hinzu. Es verwendet einen externen Endpunkt, sollte aber genauso gut für eine Webanwendung funktionieren und ist mit der Standardkopierfunktion kompatibel.

HtH, Gareth

{ 
     "apiVersion": "2015-11-01", 
     "type": "Microsoft.Network/trafficManagerProfiles/ExternalEndpoints", 
     "name": "ExternalEndpointExample/endpoint1", 
     "dependsOn": ["Microsoft.Network/trafficManagerProfiles/ExternalEndpointExample"], 
     "location": "global", 
     "properties": { 
      "target": "ep1.microsoft.com", 
      "endpointStatus": "Enabled", 
      "endpointLocation": "northeurope" 
     } 
    } 
1

Ich habe dies noch nicht getestet, aber es scheint, dass das Kopieren/copyIndex jetzt ein unterstütztes Szenario für Verkehrsmanager Endpunkte sein sollte:

https://feedback.azure.com/forums/217313-networking/suggestions/12907815-support-copy-copyindex-in-traffic-manager-depend

Hier ist ein Beispiel, das ich vor einiger Zeit implementiert habe:

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    "solution-abbreviation": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "environment-abbreviation": { 
     "type": "string", 
     "allowedValues": [ 
     "dev", 
     "test", 
     "prod" 
     ] 
    }, 

    "userinterface-abbreviation": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "userinterface-locations": { 
     "type": "array", 
     "minLength": 1 
    }, 
    "userinterface-appserviceplan-sku": { 
     "type": "string", 
     "allowedValues": [ 
     "Free", 
     "Shared", 
     "Basic", 
     "Standard" 
     ] 
    }, 
    "userinterface-appserviceplan-workersize": { 
     "type": "string", 
     "allowedValues": [ 
     "0", 
     "1", 
     "2" 
     ] 
    }, 
    "userinterface-appserviceplan-numberofworkers": { 
     "type": "int" 
    } 
    }, 
    "variables": { 
    "userinterface-trafficmanager-name": "[concat(parameters('solution-abbreviation'), '-', parameters('environment-abbreviation'), '-', parameters('userinterface-abbreviation'))]" 
    }, 
    "resources": [ 
    { 
     "name": "[concat(variables('userinterface-trafficmanager-name'), '-', parameters('userinterface-locations')[copyIndex()])]", 
     "type": "Microsoft.Web/serverfarms", 
     "location": "[parameters('userinterface-locations')[copyIndex()]]", 
     "apiVersion": "2014-06-01", 
     "dependsOn": [ ], 
     "tags": { 
     "displayName": "[concat(variables('userinterface-trafficmanager-name'), '-', parameters('userinterface-locations')[copyIndex()])]" 
     }, 
     "copy": { 
     "name": "[concat('serverfarms', '-copy')]", 
     "count": "[length(parameters('userinterface-locations'))]" 
     }, 
     "properties": { 
     "name": "[concat(variables('userinterface-trafficmanager-name'), '-', parameters('userinterface-locations')[copyIndex()])]", 
     "sku": "[parameters('userinterface-appserviceplan-sku')]", 
     "workerSize": "[parameters('userinterface-appserviceplan-workersize')]", 
     "numberOfWorkers": "[parameters('userinterface-appserviceplan-numberofworkers')]" 
     } 
    } 
    ], 
    "outputs": { 
    } 
} 
+0

Dieser Link bietet noch kein Beispiel dafür, wie Sie diese Endpunkte erstellen würden. Haben Sie ein Beispiel dafür, wie dies funktioniert? –

+0

Ich habe ein Beispiel ... Ich werde versuchen, meine Antwort so zu bearbeiten, dass sie in Kürze entsprechende Ausschnitte enthält. – Paul