Sagen Sie bitte die folgenden Dateien haben, werden diese in dem in einem Visual Studio gemacht, indem eine neue Azure Ressourcengruppe Bereitstellung auswählen und dann eine verschachtelte Vorlage Hinzufügen zweimalWie verwendet man ein uri und übergebene Parameter für eine verknüpfte Vorlage?
azuredeploy.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"_artifactsLocation": {
"type": "string"
},
"_artifactsLocationSasToken": {
"type": "securestring"
}
},
"variables": {
"linkedTemplateTemplateFolder": "nestedtemplates",
"linkedTemplateTemplateFileName": "linkedTemplate.json",
"linkedTemplateTemplateParametersFileName": "linkedTemplate.parameters.json"
},
"resources": [
{
"name": "linkedTemplate",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2016-09-01",
"dependsOn": [],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri":
"[concat(parameters('_artifactsLocation'), '/', variables('linkedTemplateTemplateFolder'), '/', variables('linkedTemplateTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
"parametersLink": {
"uri":
"[concat(parameters('_artifactsLocation'), '/', variables('linkedTemplateTemplateFolder'), '/', variables('linkedTemplateTemplateParametersFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"_artifactsLocation": { "value": "[parameters('_artifactsLocation')]" },
"_artifactsLocationSasToken": { "value": "[parameters('_artifactsLocationSasToken')]" }
}
}
}
],
"outputs": {
"result": {
"type": "object",
"value": "[reference('linkedTemplate').outputs.result.value]"
}
}
}
azuredeploy.parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
}
}
nestedtemplates \ linkedTemplate.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"Foo": {
"type": "string"
},
"_artifactsLocation": {
"type": "string"
},
"_artifactsLocationSasToken": {
"type": "securestring"
}
},
"variables": {
"thirdTeirTemplateFolder": "nestedtemplates",
"thirdTeirTemplateFileName": "thirdTeir.json",
"thirdTeirTemplateParametersFileName": "thirdTeir.parameters.json"
},
"resources": [
{
"name": "thirdTeir",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2016-09-01",
"dependsOn": [],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('thirdTeirTemplateFolder'), '/', variables('thirdTeirTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"Foo": {"value": "[parameters('Foo')]"}
}
}
}
],
"outputs": {
"result": {
"type": "string",
"value": "[reference('thirdTeir').outputs.result]"
}
}
}
nestedtemplates \ linkedTemplate.parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"Foo": {
"value": "Foo!"
}
}
}
nestedtemplates \ thirdTeir.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"Foo": {
"type": "string"
}
},
"variables": {},
"resources": [],
"outputs": {
"result": {
"type": "string",
"value": "[parameters('Foo')]"
}
}
}
Dies wird natürlich mit dem Fehler fehlschlagen
Error: Code=InvalidDeployment; Message=The deployment 'linkedTemplate' cannot have both the ParameterLink and Parameter property set. Please use one or the other. Please see https://aka.ms/arm-deploy for usage details.
und das macht durchaus Sinn, weil the documentation states Sie können nicht gleichzeitig parametersLink
und parameters
verwenden.
Welche Problemumgehung sollte ich in dieser Situation tun, wie bekomme ich _artifactsLocation
und _artifactsLocationSasToken
in der mittleren Ebene der Vorlagen übergeben, während immer noch eine separate Datei zu halten Konfigurationswerte, die übergeben werden?
Nur für den Fall, dass ich eine XY-Frage stelle, ist das wirkliche Problem, das ich zu lösen versuche, wenn es eine Möglichkeit gibt, direkt in einer JSON-Datei zu lesen, die einige über URI übermittelte Konfigurationsdaten enthält und auf deren Inhalt zugreift? Das ist etwas, was ich tun muss.
Link zu einer Kopie der Frage auf den [social.msdn.microsoft.com Foren] (https://social.msdn.microsoft.com/Forums/en-US/518943d1-2d06-4393-b3b9-f6ea5144717c/how-to-use-a-uri-und-übergeben-in-Parameter-from-inside-a-arm-Vorlage? Forum = azurescripting) –