Использование пустых / необязательных параметров в шаблоне Azure ARM

У меня возникают проблемы с настройкой шаблона ARM для веб-приложений Azure, поскольку я не могу добавить параметры ConnectionString, где они задают значения, если параметры заданы, но оставьте поле пустым (по умолчанию), если параметры не заданы.

Вот как это выглядит в файле template.json:

"connectionStrings": [
        {
          "name": "[parameters('connString').connName)]",
          "connectionString": "[parameters('connString').string]",
          "type": "[parameters('connString').connType]"
        }
      ],

И в файле parameters.json:

"connString": {
        "value": {
            "connName": "",
            "string": "",
            "connType": ""
        }
    },

При запуске развертывания с указанным выше способом происходит сбой "Имя параметра не может быть пустым" Я попытался использовать функцию равенства, чтобы установить значение как пустое, если параметр пуст, но установить параметр, если параметр заполнен, однако ему не нравится пустое значение.

"name": "[if (equals(parameters('connString').connName,''),'',parameters('connString').connName)]"

Также попытался выполнить пустую функцию:

 "name": "[not(empty(parameters('connString').connName))]"

Однако это возвращает "False", если пусто, и "True", если параметр установлен (как задумано).

Развертывание работает нормально, если я установил фиктивные значения в качестве параметров, можно ли установить функцию или что-то подобное, поэтому, если параметр пуст, он использует любое отправленное значение, как если бы раздел connectionStrings не присутствовал в шаблоне? Эти параметры не являются обязательными, но похоже, что они находятся в фактическом файле template.json и ожидают значения.

Ваше здоровье

РЕДАКТИРОВАТЬ Собираюсь опубликовать, как выглядели мои конечные шаблоны, на случай, если кому-то понадобится помощь.

Файл шаблона

Переменные

"variables": {
"empty": []
},

Ресурсы

"connectionStrings": "[if (empty(parameters('connString')), variables('empty'), array(parameters('connString')))]",

Файл параметров

При установке строки подключения

 "connString": {
        "value": [{
            "name": "test",
            "connectionString": "ufgndjkngsdgjkn",
            "type": "Custom"
        }]
    },

Если вы не хотите устанавливать строку подключения

"connString": {
    "value": [
    ]
},

стоит попробовать использовать "условие" в шаблоне ARM?

Thomas 19.10.2018 07:36
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
6
1
12 883
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вы должны просто сделать это:

параметры:

"connString": {
    "value": {}
},

переменные:

"empty": [],

шаблон:

"connectionStrings": "[if (empty(parameters('connString')), variables('empty'), array(parameters('connString')))]"

Идеально! Большое спасибо за это, отлично сработало. Обратите внимание, что мне нужно было удалить массив connectionString в файле шаблона и просто вставить предложенную строку кода. Мне также нужно было изменить файл параметров, чтобы строка подключения ожидала массив вместо объекта. Еще раз спасибо

Clackers 22.10.2018 02:11

вы можете попробовать:

параметры:

"connString": [{
    "value": {
        "name": null,
        "connectionString": null,
        "type": "Custom"
    }
}],

переменные:

шаблон:

"connectionStrings": "[if (empty(parameters('connString')[0].value.name), json('null'), parameters('connString'))]"

после дополнительного тестирования: также обнаружено несколько сценариев, в которых шаблон не принимает значение NULL as и значение ресурса массива. замена json ('null') на json ('[]') выше, похоже, работает в большем количестве случаев.

Dirk Slabbert 21.01.2019 09:03

Другие вопросы по теме