Sjabloononderdelen verkennen

Voltooid

Azure Resource Manager-sjablonen zijn geschreven in JSON, waarmee u gegevens kunt uitdrukken die zijn opgeslagen als een object (zoals een virtuele machine) in tekst.

Een JSON-document is in feite een verzameling sleutel-waardeparen. Elke sleutel is een tekenreeks die waarden kunnen zijn:

  • Een tekenreeks.
  • Een getal.
  • Een Booleaanse expressie.
  • Een lijst met waarden.
  • Een object (een verzameling andere sleutel-waardeparen).

Een Resource Manager-sjabloon kan secties bevatten die worden uitgedrukt met JSON-notatie, maar die niet zijn gerelateerd aan de JSON-taal zelf:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "functions": [  ],
    "resources": [  ],
    "outputs": {  }
}

Laten we elk van deze secties eens nader bekijken.

Parameters

In deze sectie geeft u op welke waarden kunnen worden geconfigureerd wanneer de sjabloon wordt uitgevoerd.

U kunt bijvoorbeeld toestaan dat sjabloongebruikers een gebruikersnaam, wachtwoord of domeinnaam instellen.

Hier volgt een voorbeeld van twee parameters: een voor de gebruikersnaam van een virtuele machine (VM's) en een voor het wachtwoord:

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "Username for the Virtual Machine."
    }
  },
  "adminPassword": {
    "type": "securestring",
    "metadata": {
      "description": "Password for the Virtual Machine."
    }
  }
}

Variabelen

In deze sectie definieert u waarden die in de sjabloon worden gebruikt.

Variabelen kunnen helpen om het onderhoud van sjablonen te vereenvoudigen.

U kunt bijvoorbeeld een opslagaccountnaam één keer definiëren als een variabele en die variabele vervolgens in de sjabloon gebruiken.

Als de naam van het opslagaccount wordt gewijzigd, hoeft u de variabele slechts één keer bij te werken.

Hier volgt een voorbeeld van een aantal variabelen waarin netwerkfuncties voor een VIRTUELE machine worden beschreven:

"variables": {
  "nicName": "myVMNic",
  "addressPrefix": "10.0.0.0/16",
  "subnetName": "Subnet",
  "subnetPrefix": "10.0.0.0/24",
  "publicIPAddressName": "myPublicIP",
  "virtualNetworkName": "MyVNET"
}

Functions

In deze sectie definieert u procedures die u niet in de sjabloon wilt herhalen.

Net zoals variabelen kunnen functies helpen om het onderhoud van sjablonen te vereenvoudigen.

Hier volgt een voorbeeld waarin een functie wordt gemaakt voor het maken van een unieke naam die moet worden gebruikt bij het maken van resources die wereldwijd unieke naamgevingsvereisten hebben:

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Resources

In deze sectie definieert u de Azure-resources waaruit de implementatie bestaat.

Hier volgt een voorbeeld waarmee een resource voor een openbaar IP-adres wordt gemaakt:

{
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIPAddressName')]",
  "location": "[parameters('location')]",
  "apiVersion": "2018-08-01",
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('dnsLabelPrefix')]"
    }
  }
}

Het type resource is hier Microsoft.Network/publicIPAddresses.

De naam wordt gelezen uit de sectie variabelen en de locatie, of de Azure-regio, wordt gelezen uit de sectie parameters .

Omdat resourcetypen na verloop van tijd kunnen veranderen, verwijst apiVersion naar de versie van het resourcetype die u wilt gebruiken.

Naarmate de resourcetypen zich ontwikkelen, kunt u uw sjablonen aanpassen zodat deze werken met de nieuwste functies.

Uitvoerwaarden

In deze sectie definieert u alle informatie die u wilt ontvangen wanneer de sjabloon wordt uitgevoerd.

U wilt bijvoorbeeld het IP-adres of de FQDN (Fully Qualified Domain Name) van uw VM ontvangen, de informatie die u pas weet wanneer de implementatie wordt uitgevoerd.

Hier volgt een voorbeeld van een uitvoer met de naam hostnaam.

De FQDN-waarde wordt gelezen uit de instellingen voor het openbare IP-adres van de VIRTUELE machine:

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
  }
}