2014-11-05 14 views
10

Próbuję użyć modułu PowerShell AzureResourceManager do utworzenia i skonfigurowania witryny. Zacząłem od pliku szablonu wygenerowanego przez Visual Studio, który działa poprawnie, gdy używam go przez New-AzureResourceGroup -TemplateFile website.json.Błąd szablonu witryny sieci Web Azure

Teraz próbuję zmodyfikować plik szablonu, aby skonfigurować witrynę. Próbuję ustawić wersje php i .NET Framework. Zgodnie z schema te właściwości są ustawiane za pośrednictwem obiektu config w tablicy zasobów.

Oto sekcja strony mojego szablonu json. W sekcji „zasoby” to co dodałem:

{ 
     "apiVersion": "2014-06-01", 
     "name": "[parameters('siteName')]", 
     "type": "Microsoft.Web/sites", 
     "location": "[parameters('siteLocation')]", 
     "tags": { 
      "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource" 
     }, 
     "dependsOn": [ 
      "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" 
     ], 
     "properties": { 
      "name": "[parameters('siteName')]", 
      "serverFarm": "[parameters('hostingPlanName')]" 
     }, 
     "resources": [ 
      { 
       "apiVersion": "2014-04-01", 
       "type": "Microsoft.Web/sites/config", 
       "name": "config", 
       "properties": { 
        "name": "config", 
        "phpVersion": "", 
        "netFrameworkVersion": "V4.5" 
       } 
      } 
     ] 
    }, 

Kiedy mijam ten szablon do Test-AzureResourceGroupTemplate otrzymuję ten błąd:

Code : InvalidTemplate 
Message : Deployment template validation failed: 'The template resource 'config' for type 'Microsoft.Web/sites/config' has 
      incorrect segment lengths. A nested resource type must have identical number of segments as its resource name. A root 
      resource type must have segment length one greater than its resource name'. 

nie mogę znaleźć żadnej dokumentacji na ten temat. Czy ktoś wie, co oznacza ten błąd, lub co robię źle?

+0

Podstawowe rozwiązywanie problemów z rozmieszczania szablonu ARM jest podana tutaj https://azure.microsoft.com/en-us/documentation/articles/resource-manager-common-deployment-errors/ –

Odpowiedz

22

Nigdy nie zawodzi, gdy tylko napiszę pytanie, wymyślam odpowiedź.

Błąd oznacza, że ​​ponieważ jest to zasób zagnieżdżony (obiekt konfiguracyjny jest zagnieżdżony w obiekcie witryny), nazwa musi to odzwierciedlać. Dlatego zamiast config nazwa powinna być podobna do nazwy: mysite/config. Musiałem również dodać sekcję dependsOn. Oto szablon, który został pomyślnie zweryfikowany:

"resources": [ 
    { 
     "apiVersion": "2014-04-01", 
     "type": "Microsoft.Web/sites/config", 
     "name": "[concat(parameters('siteName'), '/config')]", 
     "dependsOn": [ 
      "[concat('Microsoft.Web/sites/', parameters('siteName'))]" 
     ], 
     "properties": { 
      "phpVersion": "", 
      "netFrameworkVersion": "V4.5" 
     } 
    } 
] 
+0

na wypadek, gdyby ktoś miał ten sam błąd podczas próby dodania "zagnieżdżonych" ustawień połączeń, 1 głowy powyższej porady "/" lub dodania innych zasobów witryny, takich jak tutaj: http://stackoverflow.com/questions/ 40396154/set-arm-template-web-appsetting/40400595 # 40400595 – OzBob