2017-07-12 7 views
0

Ich bin eine Vorlage Aufbau einer verknüpften Vorlage n Anzahl, wie oft die copy Funktion zu implementieren, während die Objektvariable erhöht wird (zB von vmRole1 zu vmRole2), das ist sein verwendet, aber es scheint, dass, während ich in der Lage bin, eine richtige Variable Zeichenfolge zusammen zu verketten (zB variables('vmRole1').roleInstanceCount) es wird nie tatsächlich vor der Weiterleitung an die verknüpfte Vorlage ausgewertet.auswerten verketteten Variablennamen in Azure Resource Manager (ARM) Template

Gibt es eine Möglichkeit, dass ich die ARM-Muster tatsächlich zwingen kann, um die verkettete Zeichenfolge innerhalb der Schleife zu bewerten, bevor es zu der verknüpften Vorlage zu senden?

Variable Beispiel:

"vmRole1": { 
    ... 
    "roleInstanceCount": 2, 
    ... 
} 

Ressource Beispiel:

{ 
    "apiVersion": "2015-01-01", 
    "type": "Microsoft.Resources/deployments", 
    "name": "[concat('DeployRole',copyIndex(1) ,variables('vmRole1Name'))]", 
    "copy": { 
    "name": "rolecopy", 
    "count": 2 
    }, 
    "properties": { 
    "mode": "Incremental", 
    "templateLink": { 
     "uri": "<proper URL here>", 
     "contentVersion": "1.0.0.0" 
    }, 
    "parameters": { 
     ... 
     "roleInstanceCount": { "value": "[concat('variables(', variables('singleQuote'), 'vmRole', copyIndex(1), variables('singlequote'), ').roleInstanceCount')]" }, 
     ... 

Antwort

1

Einfache Antwort - nein.
Weird Antwort - vielleicht, wenn Sie einen anderen Satz von verschachtelten Vorlagen verwenden, um diese Werte zu überprüfen.
Lange Antwort - Sie diese völlig falsch machen. Ich habe keine Ahnung, warum sind Sie mit dem Versuch, eine so seltsame Sache zu tun zu tun, als Sie dynamisch etwas bauen ...

Versuchen Sie es so tun (die Route verwendet wird):

"value": "[variables(concat('vmRole', copyIndex())).roleInstanceCount] 

Aber ehrlich gesagt, ich konvertieren ‚d, dass vmRole1 \ vmRole2 ... \ vmRole100 Unsinn in einem Array und Referenzobjekten wie so:

"value": "[variables('vmReferenceArray')[copyIndex()].propertyX]" 

und Ihre Variable würde wie folgt aussehen:

"vmReferenceArray": [ 
    { 
     propertyX: ... 
     propertyY: ... 
     ... 
    }, 
    { 
     ... 
    }, 
    ... 
    { 
     ... 
    } 
] 
+0

Ich verbrachte viel zu viele Stunden damit, dies anzustarren. Dein erster Vorschlag ('" value ":" [concat ('vmRole', copyIndex())). RoleInstanceCount] ') hat den Trick perfekt gemacht. Ich habe über das Array nachgedacht, vielleicht werde ich zurückgehen und mich ändern es. – jak119

Verwandte Themen