Встроенный объект как значение параметра для связанного развертывания шаблона

Я хотел бы иметь возможность передавать встроенный объект в качестве значения параметра в связанный шаблон. Вариант использования: у меня есть шаблон, который развертывает служебную шину (или какой-либо другой ресурс), и шаблон, который развертывает веб-приложение. Я хочу создать шаблон, сочетающий в себе эти два компонента. Я бы хотел, чтобы в шаблоне веб-приложения был параметр объекта с именем userProvidedAppSettings, который я мог бы объединить с некоторыми значениями по умолчанию, а затем назначить полученный объект в качестве значения свойств ресурса Microsoft.Web / site / config / appsettings.

Похоже, что в настоящее время вы не можете использовать функции reference или listkeys во встроенном значении объекта для параметра, см. userProvidedAppSettings в примере ниже.

Возможно ли это, и я не использую правильное соглашение? Я ничего не видел в документации по этому поводу.

{
    "apiVersion": "[parameters('apiVersion')]",
    "name": "[variables('serviceBusDeploymentName')]",
    "type": "Microsoft.Resources/deployments",
    "properties": {
        "mode": "Incremental",
        "templateLink": {
            "uri": "[parameters('templateOneUri')]",
            "contentVersion": "1.0.0.0"
         },
         "parameters": {
             "environment": { "value": "[parameters('environment')]" },
             "appName": { "value": "[parameters('appName')]" }
          }
     }
},
{
        "apiVersion": "[parameters('apiVersion')]",
        "name": "[variables('applicationDeploymentName')]",
        "type": "Microsoft.Resources/deployments",
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[parameters('templateTwoUri')]",
                "contentVersion": "1.0.0.0"
             },
             "parameters": {
                 "environment": { "value": "[parameters('environment')]" },
                 "appName": { "value": "[parameters('appName')]" },
                 "userProvidedAppSettings" : { "value": { "serviceBusConnectionString": "[reference(variables('serviceBusDeploymentName')).outputs.connectionString.value]" } }
              }
         }
    }

РЕДАКТИРОВАТЬ:

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

"parameters": {
    // Allowed:
    "param1": { "value": "[parameters('environment')]" },
    "param2": { "value": "[reference('otherDeployment').outputs.something.value]" },
    "param3": { "value": { "this": "is allowed",
                           "inline": "is allowed" } },
    // NOT Allowed
    "param4": { "value": { "this": "is NOT allowed".
                           "foo": "[reference('otherDeployment').outputs.something.value]" } }
}

reference выходы разрешены как значения, встроенные объекты разрешены как значения, но встроенные объекты, значения которых включают reference (или неявную ссылку из list функций), НЕ разрешены. Мне интересно, возможно ли это с помощью другого соглашения, или это следует добавить в список желаемых функций.


person pwnyexpress    schedule 09.10.2018    source источник


Ответы (2)


Что касается вашей проблемы, не уверен, но вы можете попробовать ссылки и вложенные шаблоны. Вы можете получить значение шаблона ссылки в основном шаблоне.

Вы можете определить переменную в выходных данных шаблона ссылки и использовать ее в основном шаблоне. Вот простой пример здесь. Надеюсь, что это поможет вам!

person Charles Xu    schedule 12.10.2018
comment
Спасибо за ответ, Чарльз. Я сделал некоторые дополнения к вопросу, чтобы быть более конкретным. - person pwnyexpress; 15.10.2018
comment
Кажется, вам не нравится ваше редактирование. Что ты хочешь этим сделать? - person Charles Xu; 16.10.2018