2016-07-08 7 views
0

Хорошо, я сделал все, что описано здесь, с шаблоном ARM - https://azure.microsoft.com/en-us/documentation/articles/web-sites-integrate-with-vnet. За исключением одного: включение интеграции VNET с уже существующим VNET.Как создать новый ресурс в шаблонах Azure ARM?

Можно ли это сделать в шаблонах ARM? Спасибо!

+0

Может вы делитесь с ним шаблоном, так что мне не нужно начинать? –

+0

Хотел бы я, но это для клиента, и, кроме того, он большой с большим количеством параметров и переменных. Вы не можете этого сделать. – alvipeo

ответ

4

Вот образец шаблона, который может вам помочь. Он редактировался this quickstart sample in GitHub

{ 
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
     "hostingPlanName": { 
     "type": "string", 
     "minLength": 1, 
     "metadata": { 
      "description": "Name of the hosting plan to use in Azure." 
     } 
     }, 
     "webSiteName": { 
     "type": "string", 
     "minLength": 1, 
     "metadata": { 
      "description": "Name of the Azure Web app to create." 
     } 
     }, 
     "vnetName": { 
     "type": "string", 
     "minLength": 1, 
     "metadata": { 
      "description": "Name of an existing Azure VNet which has a Gateway Subnet already, and is in the resource group you are going to deploy." 
     } 
     }, 
     "skuName": { 
     "type": "string", 
     "defaultValue": "S1", 
     "allowedValues": [ 
      "S1", 
      "S2", 
      "S3", 
      "P1", 
      "P2", 
      "P3", 
      "P4" 
     ], 
     "metadata": { 
      "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" 
     } 
     }, 
     "skuCapacity": { 
     "type": "int", 
     "defaultValue": 1, 
     "minValue": 1, 
     "metadata": { 
      "description": "Describes plan's instance count" 
     } 
     } 
    }, 
    "resources": [ 
     { 
     "apiVersion": "2015-08-01", 
     "name": "[parameters('hostingPlanName')]", 
     "type": "Microsoft.Web/serverfarms", 
     "location": "[resourceGroup().location]", 
     "tags": { 
      "displayName": "HostingPlan" 
     }, 
     "sku": { 
      "name": "[parameters('skuName')]", 
      "capacity": "[parameters('skuCapacity')]" 
     }, 
     "properties": { 
      "name": "[parameters('hostingPlanName')]" 
     } 
     }, 
     { 
     "apiVersion": "2015-08-01", 
     "name": "[parameters('webSiteName')]", 
     "type": "Microsoft.Web/sites", 
     "location": "[resourceGroup().location]", 
     "tags": { 
      "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", 
      "displayName": "Website" 
     }, 
     "dependsOn": [ 
      "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" 
     ], 
     "properties": { 
      "name": "[parameters('webSiteName')]", 
      "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]" 
     }, 
     "resources": [ 
      { 
       "apiVersion": "2015-08-01", 
       "name": "web", 
       "type": "config", 
       "dependsOn": [ 
        "[concat('Microsoft.Web/sites/', parameters('webSiteName'))]" 
       ], 
       "properties": { 
        "pythonVersion": "3.4" 
       } 
      }, 
      { 
       "apiVersion": "2015-08-01", 
       "name": "[parameters('vnetName')]", 
       "type": "virtualNetworkConnections", 
       "location": "[resourceGroup().location]", 
       "dependsOn": [ 
        "[concat('Microsoft.Web/sites/', parameters('webSiteName'))]" 
       ], 
       "properties": { 
        "vnetResourceId": "[concat(resourceGroup().id, '/providers/Microsoft.Network/virtualNetworks/', parameters('vnetName'))]" 
       } 
      } 
     ] 
     } 
    ] 
} 

Вот 3 вещи, которые вы должны быть осторожны с.

  1. Шаблон начинается с шаблоном питона веб-приложениями, и добавляет «Microsoft.Web/сайты/virtualNetworkConnections» ресурс. Итак, если вы используете другой язык программирования, вы можете начать с другого шаблона.

  2. Предшествующий VNet должен находиться в той же группе ресурсов, которую вы развертываете. Если VNet, который вы используете, не входит в одну группу ресурсов, вы должны изменить «vnetResourceId» в «свойствах» «Microsoft.Web/sites/virtualNetworkConnections».

  3. Используемый вами VNet должен иметь шлюз с адресом «точка-точка». В противном случае вы не сможете интегрировать свое веб-приложение в VNet. Для получения более подробной информации см Configure a Point-to-Site connection to a virtual network using PowerShell

Update: О том, как я получаю эту информацию, ну, там не так много об этом в сети. Этот шаблон построен на основе решения PowerShell и моих знаний о шаблоне ARM. Решение PowerShell доступно в this article. Другой возможный способ получить шаблон ARM - создать эти ресурсы в одной группе ресурсов и экспортировать шаблон группы ресурсов в портал. Но для этого случая это не сработает, потому что тип ресурса «Microsoft.Web/sites/virtualNetworkConnections» пока не поддерживается. Тем не менее, вы можете посмотреть API REST командой PowerShell Get-AzureRmResource с опцией -debug.

Get-AzureRmResource -ResourceGroupName <resource group> -ResourceType Microsoft.Web/sites/virtualNetworkConnections -Name <web app>/<VNet> -debug -ApiVersion 2015-08-01 

Вы получите следующий REST API.

Uri:

https://management.azure.com/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Web/sites/<web app>/virtualNetworkConnections/<VNet>?api-version=2015-08-01 

тела:

{ 
    "id": "/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Web/sites/<web app>/virtualNetworkConnections/<VNet>", 
    "name": "<VNet>", 
    "type": "Microsoft.Web/sites/virtualNetworkConnections", 
    "location": "<Location>", 
    "tags": null, 
    "properties": { 
    "vnetResourceId": "/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<VNet>" 
    "certThumbprint": "<Thumbprint>", 
    "certBlob": "<cert>", 
    "routes": null, 
    "resyncRequired": false, 
    "dnsServers": null 
    } 
} 

Пропустив некоторые автоматически сгенерированные значения, вы получите шаблон, который очень похож на тот, что я пишу:

{ 
    "name": "<VNet>", 
    "type": "Microsoft.Web/sites/virtualNetworkConnections", 
    "location": "<Location>", 
    "properties": { 
    "vnetResourceId": "/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<VNet>" 
    } 
} 
+0

Не могли бы вы объяснить, как вы получили эту информацию? ресурсный исследователь? где вы получили эту схему? Благодаря! – alvipeo

+0

См. Мое обновление. –

+0

Благодарим за обновление! Я не знал об этом трюке с -debug! Хороший! – alvipeo