2014-12-22 2 views
2

Я пытаюсь добавить настройки приложения на свой сайт Azure через файлы шаблонов JSON как часть Azure Resource Manager.Настройки параметров веб-сайта Azure Resource Manager

В файле json-файла Azure Resource есть примеры для создания connectionStrings непосредственно из файла шаблона JSON с подзависимостью типа 'config' со свойствами для 'connectionStrings', как в последнем примере здесь http://haishibai.blogspot.co.uk/2014/09/tutorial-building-azure-template.html У меня также есть проверено в определении схемы сайта для сайтов здесь http://schema.management.azure.com/schemas/2014-06-01/Microsoft.Web.json#/definitions/sites и не может видеть, что это возможно.

Можно ли определить параметры приложения веб-сайтов для развертывания диспетчера ресурсов из файла шаблона JSON? И если так, то любые ссылки или детали будут высоко оценены.

(я уже пробовал свойство AppSettings внутри конфигурации ресурса и внутри сайта ресурса)

ответ

15

У меня есть образец, который показывает, как сделать это here. Это выглядит следующим образом:

{ 
     "apiVersion": "2014-11-01", 
     "name": "appsettings", 
     "type": "config", 
     "dependsOn": [ 
     "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]" 
     ], 
     "properties": { 
     "AppSettingKey1": "Some value", 
     "AppSettingKey2": "My second setting", 
     "AppSettingKey3": "My third setting" 
     } 
    } 

Пожалуйста, убедитесь, что вы используете новейшую 2014-11-01 API, так как она имеет дело с настройками приложения немного отличается от старого API.

+0

Спасибо за этого Давида. Работает, но при этом настройки приложения и строки подключения имеют строчную букву. то есть в этом примере appSettingKey1 - это то, что отображается на портале. Или у меня STORAGE_ACCOUNT_NAME появляется sTORAGE_ACCOUNT_NAME. Это обычное дело? Или я все еще делаю что-то неправильно? – dmpontifex

+0

Это ошибка, вы не делаете ничего плохого. Тем не менее, это безопасно, так как плохой корпус не используется во время выполнения настроек. Это возвращает API только API. Это будет исправлено в будущем, но пока вы можете игнорировать этот причуд :) –

+0

@DavidEbbo можно установить встроенные свойства, такие как 'AlwaysOn' /' WebSockets' и т. Д.? Кроме того, возможно ли установить локальное развертывание git с использованием шаблонов Azure? – James

2

Вот решение для последней версии 2014-06-01 версии API.

"resources": [ 
    { 
     "apiVersion": "2014-06-01", 
     "name": "[parameters('webSiteName')]", 
     "type": "Microsoft.Web/sites", 
     "location": "[parameters('webSiteLocation')]", 
     "tags": { 
      "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('webSiteHostingPlanName'))]": "Resource", 
      "displayName": "WebSite" 
     }, 
     "dependsOn": [ 
      "[concat('Microsoft.Web/serverfarms/', parameters('webSiteHostingPlanName'))]" 
     ], 
     "properties": { 
      "name": "[parameters('webSiteName')]", 
      "serverFarm": "[parameters('webSiteHostingPlanName')]" 
     }, 
     "resources": [ 
      { 
       "apiVersion": "2014-04-01", 
       "name": "MSDeploy", 
       "type": "extensions", 
       "dependsOn": [ 
        "[concat('Microsoft.Web/Sites/', parameters('webSiteName'))]" 
       ], 
       "properties": { 
        "packageUri": "[concat(parameters('dropLocation'), '/', parameters('webSitePackage'), parameters('dropLocationSasToken'))]", 
        "dbType": "None", 
        "connectionString": "", 
        "setParameters": { 
         "IIS Web Application Name": "[parameters('webSiteName')]" 
        } 
       } 
      }, 
      { 
       "apiVersion": "2014-04-01", 
       "name": "web", 
       "type": "config", 
       "dependsOn": [ 
        "[resourceId('Microsoft.Web/Sites', parameters('webSiteName'))]" 
       ], 
       "properties": { 
        "connectionStrings": [ 
         { 
          "ConnectionString": "AzureWebJobsStorage", 
          "Name": "CustomConnectionString1" 
         }, 
         { 
          "ConnectionString": "AzureWebJobsStorage", 
          "Name": "CustomConnectionString2" 
         } 
        ], 
        "appSettings": [ 
         { 
          "Name": "Key1", 
          "Value": "Value1" 
         }, 
         { 
          "Name": "Key2", 
          "Value": "Value2" 
         } 
        ] 
       } 
      } 
     ] 
    }, 
+0

Что вы подразумеваете под «последней версией»? Вы используете «2014-04-01» и «2014-06-01», Дэвид явно сказал использовать «2014-11-01». – BenV

+0

Спасибо за указание .. Я обновил свой ответ! Мое решение для версии API 2014-06-01 API, которая является стандартной версией, установленной в файле шаблона, когда я создал проект развертывания. (У меня установлен Azure SDK 2.5) – infinity

10

С благодарностью Simon Pedersen - properties/siteConfig/appSettings работ по состоянию на ноябрь 2015 года

{ 
    "apiVersion": "2014-06-01", 
    "name": "[concat(parameters('siteName'),copyIndex())]", 
    "type": "Microsoft.Web/sites", 
    "location": "[parameters('siteLocations')[copyIndex()]]", 
    "tags": { 
     "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", 
     "displayName": "Website" 
    }, 
    "dependsOn": [ 
     "[concat('Microsoft.Web/serverfarms/', concat(parameters('hostingPlanName'),copyIndex()))]", 
     "[concat('Microsoft.Storage/storageAccounts/', parameters('newStorageAccountName'))]" 
    ], 
    "properties": { 
     "name": "[concat(parameters('siteName'),copyIndex())]", 
     "serverFarm": "[concat(parameters('hostingPlanName'),copyIndex())]", 
     "siteConfig": { 
      "appSettings": [ 
       { 
        "name": "AzureStorageAccount", 
        "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('newStorageAccountName'),';AccountKey=',listKeys(variables('storageid'),'2015-05-01-preview').key1)]" 
       } 
      ] 
     } 
    }, 
    "copy": { 
     "name": "siteCopy", 
     "count": "[parameters('numberOfSites')]" 
    } 
}