Prozkoumání součástí šablony

Dokončeno

Šablony Azure Resource Manageru jsou napsané ve formátu JSON, což umožňuje vyjádřit data uložená jako objekt (například virtuální počítač) v textu.

Dokument JSON je v podstatě kolekce párů klíč-hodnota. Každý klíč je řetězec, ke kterému mohou být přiřazeny hodnoty:

  • Řetězec.
  • Číslo.
  • Logický výraz typu Boolean.
  • Seznam hodnot.
  • Objekt (který je kolekce jiných párů hodnota-klíč).

Šablona Resource Manageru může obsahovat oddíly vyjádřené pomocí notace JSON, ale nesouvisejí se samotným jazykem JSON:

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

Pojďme se na každou z těchto částí podívat podrobněji.

Parametry

V této části určíte, které hodnoty se dají konfigurovat při spuštění šablony.

Můžete například povolit uživatelům šablony nastavit uživatelské jméno, heslo nebo název domény.

Tady je příklad, který znázorňuje dva parametry: jeden pro uživatelské jméno virtuálního počítače a jeden pro jeho heslo:

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

Proměnné

V této části definujete hodnoty, které se používají v celé šabloně.

Proměnné vám můžou pomoct usnadnit údržbu šablon.

Můžete například definovat název účtu úložiště jednou jako proměnnou a pak tuto proměnnou použít v celé šabloně.

Pokud se název účtu úložiště změní, stačí proměnnou aktualizovat jenom jednou.

Tady je příklad, který znázorňuje několik proměnných, které popisují síťové funkce pro virtuální počítač:

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

Funkce

V této části definujete procedury, které nechcete opakovat v celé šabloně.

Podobně jako proměnné můžou funkce usnadnit údržbu šablon.

Tady je příklad, který vytvoří funkci pro vytvoření jedinečného názvu, který se použije při vytváření prostředků s globálně jedinečnými požadavky na pojmenování:

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

Prostředky

V této části definujete prostředky Azure, které tvoří vaše nasazení.

Tady je příklad, který vytvoří prostředek veřejné IP adresy:

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

Zde se jedná o typ zdroje Microsoft.Network/publicIPAddresses.

Název se načte z oddílu proměnných a umístění nebo oblast Azure se načte z oddílu parametrů .

Vzhledem k tomu, že se typy prostředků můžou v průběhu času měnit, apiVersion odkazuje na verzi typu prostředku, který chcete použít.

S vývojem typů prostředků můžete upravit šablony tak, aby fungovaly s nejnovějšími funkcemi.

Výstupy

V této části definujete všechny informace, které chcete získat při spuštění šablony.

Můžete například chtít získat IP adresu nebo plně kvalifikovaný název domény (FQDN) vašeho virtuálního počítače, informace, které nebudete vědět, dokud se nasazení nespustí.

Tady je příklad, který znázorňuje výstup s názvem název hostitele.

Hodnota plně kvalifikovaného názvu domény se načte z nastavení veřejné IP adresy virtuálního počítače:

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