探索範本元件

已完成

Azure Resource Manager 範本以 JSON 撰寫,可讓您以文字表示儲存為物件 (例如虛擬機器) 的資料。

「JSON 文件」基本上是索引鍵/值組的集合。 每個索引鍵都是字串,值可為下列類型:

  • 字串。
  • 數字。
  • Boolean 運算式。
  • 值的清單。
  • 物件 (也就是其他索引鍵/值組的集合)。

Resource Manager 範本可包含使用 JSON 標記法表示,但與 JSON 語言本身無關的區段:

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

讓我們更仔細地看一下這些區段。

參數

您要在此區段指定範本執行時可設定哪些值。

例如,您可能會允許範本使用者設定使用者名稱、密碼或網域名稱。

以下是說明兩個參數的範例:一個用於虛擬機器 (VM) 的使用者名稱,另一個用於其密碼:

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

變數

您要在此區段定義整個範本中使用的值。

變數有助於讓您的範本更容易維護。

例如,您可以先將儲存體帳戶名稱定義為變數,就可在整個範本中使用該變數。

如果儲存體帳戶名稱變更,您只需要更新變數一次。

以下範例說明描述 VM 網路功能的幾個變數:

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

函式

您要在此區段定義您不想要在整個範本重複的程序。

函式和變數一樣,有助於讓您的範本更容易維護。

以下範例會建立一個函式,以建立唯一名稱,在建立具有全域唯一命名需求的資源時使用:

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

資源

您要在此區段定義組成您部署的 Azure 資源。

以下是建立公用 IP 位址資源的範例:

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

這裡的資源類型為 Microsoft.Network/publicIPAddresses

名稱是從變數區段讀取,而其位置Azure 區域,則是從參數區段讀取。

資源類型可以隨著時間變更,因此 apiVersion 指的是您想要使用之資源類型的版本。

您可以隨著資源類型的演化,修改您的範本,以便使用最新的功能。

輸出

您要在此區段定義您希望在範本執行時收到的任何資訊。

例如,您可能想要收到您在部署之前不知道的資訊,如 VM IP 位址或完整網域名稱 (FQDN)。

以下是說明名為 hostname 的輸出的範例。

FQDN 值是從 VM 的公用 IP 位址設定讀取:

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