2016-04-03 8 views
0

Я думал, что для определения номеров версий API он выглядит так, как будто я повторяю в каком-то шаблоне, на который ссылаются во всех связанных шаблонах, но похоже, что у меня проблемы с этим, m не уверен, что это должно быть даже возможно, не говоря уже о том, как это сделать.Обмен переменными или константами между шаблонами ARM

Например, INT azuredeploy-shared.json я мог бы сделать что-то вроде

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "variables": { 
    "apiVersion": { 
     "resources": { "deployments": "2015-01-01" } 
    } 
    } 
} 

и в azuredeploy.json я мог бы использовать его как

resources": [ 
{ 
    "name": "someResource", 
    "type": "Microsoft.Resources/deployments", 
    "apiVersion": "[variables('apiVersion').resources.deployments]", 

Первый камнем преткновения там должен быть resources раздел. Это заставляет меня задаться вопросом, ссылаюсь ли я на неправильную схему или вообще следует ссылаться на нее. Если я создаю что-то, что я считаю фиктивными ресурсами и при условии, что эта идея работает, как должен azuredeploy.json ссылаться на этот файл?

Я мог бы сделать что-то вроде "[concat(parameters('_artifactsLocation'), '/ProjectName/Templates/azuredeploy-shared-json', parameters('_artifactsLocationSasToken'))]", но я не знаю, где и как и как он должен работать. Таким образом, рабочие указатели оценили в этом отношении. Я видел How to pass variables between templates - ARM json, но, к сожалению, я не понимал, как он должен работать, и ни связанный пример Azure.

+0

Просто, чтобы убедиться, что я понимаю ваш сценарий ... вы в основном пытаетесь вытащить параметры/переменные из 2 json-файлов - один с общими значениями и один со значениями, уникальными для этого развертывания? –

+0

@ bmoore-msft Я пытаюсь создать файл «константы», который я могу «включить» в другие файлы, а затем ссылаюсь на константы с некоторым постоянным именем переменной. Я заметил, что у меня много строк, таких как «apiVersion»: «2015-01-01», которые я хотел бы обновить сразу после того, как инструмент не будет жаловаться, скажем, в этом случае об использовании * «2016- 03-30" *. Боюсь, я пропустил что-то простое. Мне удалось «включить» другие фрагменты (используя эту «concat' вещь там) и передать им параметры, но не * из них *. Может быть, мне нужно как-то использовать директиву «выходы» ..? – Veksi

ответ

2

Хорошо, я думаю, вы могли бы сделать это с помощью вывода развертывания ... похоже, что может быть более простое решение, но я не могу придумать ни одного, насколько я понимаю, о вашем сценарии.

1) развернуть шаблон, содержащий все константы и установить эти константы в качестве выходов для этого развертывания

2) в развертывании шаблона, где вы хотите получить доступ к ним, использовать справочную функцию, например

reference('/subscriptions/{GUID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}','2015-01-01').outputs.{nameOfConstant}.value]" 

Просто разверните шаг # 1 снова с тем же именем развертывания, чтобы обновить константы. Это то, что вам нужно?

+0

Я думаю, что выход - это путь. Я выросла в своем шаблоне довольно большой, поэтому нужно немного сломать его и проверить. Спасибо, что подтвердили это! – Veksi