Совместное использование переменных или констант между шаблонами ARM

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

Например, 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'))]", но я не знаю, где и как, и должно ли это работать. Таким образом, рабочие указатели приветствуются в этом отношении. Я видел Как передавать переменные между шаблонами - ARM json , но, к сожалению, я не понял, как это должно работать, как и связанный пример Azure.


person Veksi    schedule 03.04.2016    source источник
comment
Просто чтобы убедиться, что я понимаю ваш сценарий ... вы, по сути, пытаетесь извлечь параметры / переменные из двух файлов json - один с общими значениями и один со значениями, уникальными для этого развертывания?   -  person bmoore-msft    schedule 04.04.2016
comment
@bmoore-msft Я пытаюсь создать файл констант, который я могу включить в другие файлы, а затем ссылаться на константы с некоторым именем постоянной переменной. Я заметил, что у меня есть много строк, таких как apiVersion: 2015-01-01, которые я хотел бы обновить сразу, как только инструментарий не будет жаловаться, скажем, в этом случае на использование 2016-03-30 . Боюсь, я пропустил что-то простое. Мне удалось включить другие фрагменты (используя эту штуку concat) и передать им параметры, но не от них. Может быть, мне следует как-то использовать директиву outputs?   -  person Veksi    schedule 04.04.2016


Ответы (1)


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

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

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

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

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

person bmoore-msft    schedule 07.04.2016
comment
Я думаю, что выходы - это путь. Я довольно сильно увеличил свой шаблон, поэтому нужно немного его разбить и протестировать. Спасибо, что подтвердили это! - person Veksi; 09.04.2016