Формирование строки подключения к SQL DB в выходных данных шаблона arm с использованием условных операторов

#json #azure-devops #azure-sql-database #azure-resource-manager #arm-template

Вопрос:

Я создаю шаблон ARM, который создает базы данных (массив) на сервере SQL Azure, и я пытаюсь вывести ADO.NET строки подключения и сохраните их в хранилище ключей. У меня есть 3 строки подключения (аутентификация SQL, аутентификация по паролю AD и встроенная аутентификация AD). Я получаю выходные данные, предоставляя их по отдельности, как показано ниже:

 "outputs": {
        "SQLAuthConnectionString": {
            "type": "object",
            "value": {
                "type": "string",
                "value": "[concat('Server=tcp:',reference(parameters('serverName')).fullyQualifiedDomainName,',1433;Initial Catalog=',parameters('dbnameName'),';Persist Security Info=False;User ID=',reference(parameters('serverName')).administratorLogin,';Password=',reference(parameters('serverName')).administratorLoginPassword,';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]"
            }
        },
        "ADPasswordConnectionString": {
            "type": "object",
            "value": {
                "type": "string",
                "value": "[concat('Server=tcp:',reference(parameters('serverName')).fullyQualifiedDomainName,',1433;Initial Catalog=',parameters('dbnameName'),';Persist Security Info=False;User ID=',reference(parameters('serverName')).administratorLogin,';Password=',reference(parameters('serverName')).administratorLoginPassword,';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Password"]"
            }
        },
        "ADIntegratedConnectionString": {
            "type": "object",
            "value": {
                "type": "string",
                "value": "[concat('Server=tcp:',parameters('serverName').fullyQualifiedDomainName,,,1433;Initial Catalog=',parameters('databaseName'),';Persist Security Info=False;User ID=',reference(parameters('serverName'))]"
 

Однако проверка, можем ли мы добавить условия в выходные данные (используя параметр ex: parameter('authentication_method') или любым другим способом). Любые входные данные приветствуются, поскольку это мой первый шаблон arm.

Ответ №1:

Как упоминалось в документации Azure, вы можете использовать условия в блоке вывода шаблона ARM при условном развертывании ресурса.

Вы можете обратиться к этому документу для простого примера условного вывода.

Комментарии:

1. Кроме того, имейте в виду, что ввод секрета в выходные данные сделает этот секрет доступным для всех, у кого есть доступ на ЧТЕНИЕ в пределах области (например, ResourceGroup, подписка)