Sjablonen modulair maken

Voltooid

Wanneer u Azure Resource Manager-sjablonen gebruikt, kunt u ze het beste modulariseren door ze op te delen in afzonderlijke onderdelen.

De primaire methodologie die u kunt gebruiken, is met behulp van gekoppelde sjablonen.

Hiermee kunt u de oplossing opsplitsen in doelonderdelen en deze verschillende elementen opnieuw gebruiken in verschillende implementaties.

Een gekoppelde sjabloon

Voeg een implementatieresource toe aan uw hoofdsjabloon om een sjabloon aan een andere sjabloon te koppelen.

"resources": [
  {
      "apiVersion": "2017-05-10",
      "name": "linkedTemplate",
      "type": "Microsoft.Resources/deployments",
      "properties": {
          "mode": "Incremental",
          <link-to-external-template>
      }
  }
]


Geneste sjabloon

U kunt ook een sjabloon in de hoofdsjabloon nesten, de sjablooneigenschap gebruiken en de syntaxis van de sjabloon opgeven.

Het biedt enigszins ondersteuning voor modularisatie, maar het opsplitsen van de verschillende onderdelen kan leiden tot een groot hoofdbestand, omdat alle elementen zich in dat ene bestand bevinden.

"resources": [
  {
    "apiVersion": "2017-05-10",
    "name": "nestedTemplate",
    "type": "Microsoft.Resources/deployments",
    "properties": {
      "mode": "Incremental",
      "template": {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
          {
            "type": "Microsoft.Storage/storageAccounts",
            "name": "[variables('storageName')]",
            "apiVersion": "2015-06-15",
            "location": "West US",
            "properties": {
              "accountType": "Standard_LRS"
            }
          }
        ]
      }
    }
  }
]

Notitie

U kunt geen parameters of variabelen gebruiken die zijn gedefinieerd in de geneste sjabloon zelf voor geneste sjablonen. U kunt alleen parameters en variabelen uit de hoofdsjabloon gebruiken.

De eigenschappen die u voor de implementatieresource opgeeft, variëren afhankelijk van het koppelen aan een externe sjabloon of het nesten van een inlinesjabloon in de hoofdsjabloon.

Implementatiemodi

Wanneer u uw resources implementeert met behulp van sjablonen, hebt u drie opties:

  • valideren. Deze optie compileert de sjablonen, valideert de implementatie, zorgt ervoor dat de sjabloon functioneel is (bijvoorbeeld geen kringafhankelijkheden) en de juiste syntaxis.
  • incrementele modus (standaard). Met deze optie wordt alleen geïmplementeerd wat er in de sjabloon is gedefinieerd. Er worden geen resources verwijderd of gewijzigd die niet in de sjabloon zijn gedefinieerd. Als u bijvoorbeeld een virtuele machine hebt geïmplementeerd via een sjabloon en de naam van de VIRTUELE machine in de sjabloon hebt gewijzigd, blijft de eerste geïmplementeerde VM behouden nadat de sjabloon opnieuw is uitgevoerd. Dit is de standaardmodus.
  • volledige modus: Resource Manager verwijdert resources die aanwezig zijn in de resourcegroep, maar is niet opgegeven in de sjabloon. Zo zijn alleen resources die in de sjabloon zijn gedefinieerd, aanwezig in de resourcegroep nadat de sjabloon is geïmplementeerd. Gebruik deze modus als best practice voor productieomgevingen om idempotentie in uw implementatiesjablonen te bereiken.

Wanneer u implementeert met PowerShell, gebruikt u de parameter Modus om de implementatiemodus in te stellen, zoals eerder in dit onderwerp is beschreven in het geneste sjabloonvoorbeeld.

Notitie

Gebruik als best practice één resourcegroep per implementatie.

Notitie

U kunt de implementatiemodus alleen gebruiken incremental voor gekoppelde en geneste sjablonen.

Externe sjabloon en externe parameters

Als u een koppeling wilt maken naar een extern sjabloon- en parameterbestand, gebruikt u templateLink en parametersLink.

Wanneer u een koppeling maakt naar een sjabloon, moet u ervoor zorgen dat de Resource Manager-service er toegang toe heeft.

U kunt bijvoorbeeld geen lokaal bestand opgeven of een bestand dat alleen beschikbaar is op uw lokale netwerk.

U kunt alleen een URI-waarde (Uniform Resource Identifier) opgeven die HTTP of HTTPS bevat.

Een optie is om uw gekoppelde sjabloon in een opslagaccount te plaatsen en de URI voor dat item te gebruiken.

U kunt ook de parameter inline opgeven. U kunt echter niet zowel inlineparameters als een koppeling naar een parameterbestand gebruiken.

In het volgende voorbeeld wordt de parameter templateLink gebruikt:

  "resources": [
    {
      "name": "linkedTemplate",
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2018-05-01",
      "properties": {
          "mode": "Incremental",
          "templateLink": {
              "uri":"https://linkedtemplateek1store.blob.core.windows.net/linkedtemplates/linkedStorageAccount.json?sv=2018-03-28&sr=b&sig=dO9p7XnbhGq56BO%2BSW3o9tX7E2WUdIk%2BpF1MTK2eFfs%3D&se=2018-12-31T14%3A32%3A29Z&sp=r"
          },
          "parameters": {
              "storageAccountName":{"value": "[variables('storageAccountName')]"},
              "location":{"value": "[parameters('location')]"}
          }
      }
    },


Een externe sjabloon beveiligen

Hoewel de gekoppelde sjabloon extern beschikbaar moet zijn, hoeft deze niet beschikbaar te worden gesteld aan het publiek.

In plaats daarvan kunt u uw sjabloon toevoegen aan een privéopslagaccount dat alleen toegankelijk is voor de eigenaar van het opslagaccount, waarbij u SAS-tokens (Shared Access Signature) maakt om toegang in te schakelen tijdens de implementatie.

U voegt dat SAS-token toe aan de URI voor de gekoppelde sjabloon.

Hoewel het token wordt doorgegeven als een beveiligde tekenreeks, wordt de URI van de gekoppelde sjabloon, inclusief het SAS-token, vastgelegd in de implementatiebewerkingen.

Als u de blootstelling wilt beperken, kunt u ook een vervaldatum voor het token instellen.