Sablonösszetevők felfedezése

Befejeződött

Az Azure Resource Manager-sablonok JSON-ban vannak megírva, amely lehetővé teszi az objektumként (például virtuális gépként) tárolt adatok szöveges kifejezését.

A JSON-dokumentumok lényegében kulcs-érték párok gyűjteményei. Minden kulcs egy sztring, amely értékek lehetnek:

  • Egy sztring.
  • Egy szám.
  • Logikai kifejezés.
  • Értékek listája.
  • Objektum (amely más kulcs-érték párok gyűjteménye).

A Resource Manager-sablonok tartalmazhatnak olyan szakaszokat, amelyek JSON-jelöléssel vannak kifejezve, de nem kapcsolódnak magához a JSON-nyelvhez:

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

Tekintsük át ezeket a szakaszokat egy kicsit részletesebben.

Parameters

Ebben a szakaszban adhatja meg, hogy mely értékek konfigurálhatók a sablon futtatásakor.

Engedélyezheti például, hogy a sablonfelhasználók felhasználónevet, jelszót vagy tartománynevet állítsanak be.

Íme egy példa, amely két paramétert mutat be: egyet egy virtuális gép (VM) felhasználónevéhez, egyet pedig a jelszavához:

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

Változók

Ebben a szakaszban definiálhatja a sablonban használt értékeket.

A változókkal könnyebben fenntarthatók a sablonok.

Megadhat például egy tárfióknevet egyszer változóként, majd használhatja a változót a sablonban.

Ha a tárfiók neve megváltozik, csak egyszer kell frissítenie a változót.

Íme egy példa, amely néhány változót mutat be, amelyek egy virtuális gép hálózati funkcióit írják le:

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

Funkciók

Ebben a szakaszban határozhatja meg azokat az eljárásokat, amelyeket nem szeretne megismételni a sablonban.

A változókhoz hasonlóan a függvényekkel is könnyebben fenntarthatók a sablonok.

Íme egy példa, amely létrehoz egy függvényt egy egyedi név létrehozásához, amelyet a globálisan egyedi elnevezési követelményekkel rendelkező erőforrások létrehozásakor használhat:

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

Források

Ebben a szakaszban meghatározhatja az üzembe helyezés Azure-erőforrásait.

Íme egy példa, amely létrehoz egy nyilvános IP-címerőforrást:

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

Az erőforrás típusa Microsoft.Network/publicIPAddresses.

A név a változók szakaszból lesz beolvasva, a hely vagy az Azure-régió pedig a paraméterek szakaszból olvasható be.

Mivel az erőforrástípusok idővel változhatnak, az apiVersion a használni kívánt erőforrástípus verziójára vonatkozik.

Az erőforrástípusok fejlődésével módosíthatja a sablonokat, hogy a legújabb funkciókkal működjön.

Kimenetek

Ebben a szakaszban definiálhat minden olyan információt, amelyet a sablon futtatásakor kapni szeretne.

Előfordulhat például, hogy meg szeretné kapni a virtuális gép IP-címét vagy teljes tartománynevét (FQDN), azokat az információkat, amelyeket az üzembe helyezés lefutásáig nem fog tudni.

Az alábbi példa egy gazdagépnév nevű kimenetet szemléltet.

A teljes tartománynév értékét a rendszer a virtuális gép nyilvános IP-címbeállításaiból olvassa be:

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