Я пытаюсь выяснить, как работают вложенные шаблоны, и у меня есть шаблоны ниже. Я пытаюсь выполнить развертывание из VS с использованием механизма развертывания VS:
- Щелкните правой кнопкой мыши проект> Развернуть> Новый
- Поле «Учетная запись хранилища артефактов» заполняется полем «Автоматически создавать учетную запись хранения», и я оставляю это так
- Нажмите на кнопку Deploy
Если вы посмотрите на шаблон HelloWorldParent.json в переменных, вы увидите две переменные "nestedTemplateUri" и "nestedTemplateUriWithBlobContainerName".
Насколько я понимаю, "nestedTemplateUri" должен содержать "имя контейнера BLOB-объектов", но это не так.
Если я развертываю с ресурсами> свойства> templateLink> "uri": "[variable ('nestedTemplateUri')]"
- Развертывание завершается неудачно с:
Ошибка: Code = InvalidContentLink; Сообщение = невозможно загрузить развертывание
содержание от
«https://********.blob.core.windows.net/NestedTemplates/HelloWorld.json?sv=2017-07-29&sr=c&sig=ZCJAoOdp08qDWxbzKbXSZzX1VBCf7%2FNSt4aIznFCTPQ%3D&se=2019-03-12T03:39:09Z&sp=r'
- Создана учетная запись хранения, загружены шаблоны, параметры и скрипт PS1
- Новое развертывание не создано в группе ресурсов / развертываниях
Если я внедряю с ресурсами> properties> templateLink> "uri": "[variable ('nestedTemplateUriWithBlobContainerName')]"
- Развертывание выполнено успешно.
Есть идеи? Любая помощь высоко ценится!
HelloWorldParent.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"_artifactsLocation": {
"type": "string",
"metadata": {
"description": "The base URI where artifacts required by this template are located including a trailing '/'"
}
},
"_artifactsLocationSasToken": {
"type": "securestring",
"metadata": {
"description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured."
},
"defaultValue": ""
}
},
"variables": {
"blobContainerName": "[concat(resourceGroup().name, '-stageartifacts/')]",
"nestedTemplateUriWithBlobContainerName": "[uri(parameters('_artifactsLocation'), concat(variables('blobContainerName'), 'NestedTemplates/HelloWorld.json', parameters('_artifactsLocationSasToken')))]",
"nestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('NestedTemplates/HelloWorld.json', parameters('_artifactsLocationSasToken')))]"
},
"resources": [
{
"apiVersion": "2017-05-10",
"name": "linkedTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "incremental",
"templateLink": {
"uri": "[variables('nestedTemplateUri')]",
"contentVersion": "1.0.0.0"
}
}
}
],
"outputs": {
"messageFromLinkedTemplate": {
"type": "string",
"value": "[reference('linkedTemplate').outputs.greetingMessage.value]"
},
"_artifactsLocation": {
"type": "string",
"value": "[parameters('_artifactsLocation')]"
}
}
}
HelloWorldParent.parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
}
}
NestedTemplates / HelloWorld.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [],
"outputs": {
"greetingMessage": {
"value": "Hello World (1)",
"type": "string"
}
}
}