Fungsi perbandingan untuk templat ARM

Resource Manager menyediakan fungsi berikut untuk mendapatkan nilai yang terkait dengan penyebaran templat Azure Resource Manager (templat ARM) Anda saat ini:

Untuk mendapatkan nilai dari sumber daya, grup sumber daya, atau langganan, lihat Fungsi sumber daya.

Tip

Kami merekomendasikan Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaksnya lebih mudah digunakan. Untuk mempelajari selengkapnya, lihat fungsi penyebaran.

penyebaran

deployment()

Menampilkan informasi tentang operasi penyebaran saat ini.

Di Bicep, gunakan fungsi deployment.

Menampilkan nilai

Fungsi ini menampilkan objek yang dilewatkan selama penyebaran. Properti dalam objek yang ditampilkan berbeda berdasarkan apakah Anda:

  • menyebarkan templat atau spesifikasi templat.
  • menyebarkan templat yang merupakan file lokal atau menyebarkan templat yang merupakan file jarak jauh yang diakses melalui URI.
  • menyebarkan ke grup sumber daya atau menyebarkan ke salah satu cakupan lainnya (langgananAzure,grup manajemen, atau penyewa).

Saat menyebarkan templat lokal ke grup sumber daya: fungsi menampilkan format berikut:

{
  "name": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Saat menyebarkan templat jarak jauh ke grup sumber daya: fungsi menampilkan format berikut:

{
  "name": "",
  "properties": {
    "templateLink": {
      "uri": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Saat menyebarkan spesifikasi templat ke grup sumber daya: fungsi menampilkan format berikut:

{
  "name": "",
  "properties": {
    "templateLink": {
      "id": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Saat Anda menggunakan langganan Azure, grup manajemen, atau penyewa, objek yang ditampilkan menyertakan properti location. Properti lokasi disertakan saat menggunakan templat lokal atau templat eksternal. Formatnya adalah:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Saat menyebarkan templat languageVersion 2.0 , deployment fungsi mengembalikan subset properti terbatas:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "contentVersion": ""
    },
    "templateLink": {
      "id": "",
      "uri": ""
    }
  }
}

Keterangan

Anda dapat menggunakan deployment() untuk menautkan ke templat lain berdasarkan URI templat induk.

"variables": {
  "sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"
}

Jika Anda menyebarkan ulang templat dari riwayat penyebaran di portal, templat tersebut akan disebarkan sebagai file lokal. Properti templateLink tidak ditampilkan dalam fungsi penyebaran. Jika templat Anda bergantung pada templateLink untuk membuat tautan ke templat lain, jangan gunakan portal untuk menebusnya. Sebagai gantinya, gunakan perintah yang Anda gunakan untuk menyebarkan templat pada awalnya.

Contoh

Contoh berikut menampilakn objek penyebaran.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "deploymentOutput": {
      "type": "object",
      "value": "[deployment()]"
    }
  }
}

Contoh sebelumnya menampilkan objek berikut:

{
  "name": "deployment",
  "properties": {
    "template": {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [],
      "outputs": {
        "deploymentOutput": {
          "type": "Object",
          "value": "[deployment()]"
        }
      }
    },
    "templateHash": "13135986259522608210",
    "parameters": {},
    "mode": "Incremental",
    "provisioningState": "Accepted"
  }
}

Untuk penyebaran berlangganan, contoh berikut menampilkan objek penyebaran.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [],
  "outputs": {
    "exampleOutput": {
      "type": "object",
      "value": "[deployment()]"
    }
  }
}

lingkungan

environment()

Menampilkan informasi tentang lingkungan Azure yang digunakan untuk penyebaran.

Di Bicep, gunakan fungsi environment.

Keterangan

Untuk melihat daftar lingkungan terdaftar untuk akun Anda, gunakan az cloud list atau Get-AzEnvironment.

Menampilkan nilai

Fungsi ini menampilkan properti untuk lingkungan Azure saat ini. Contoh berikut memperlihatkan properti untuk Azure global. Sovereign cloud dapat menampilkan properti yang sedikit berbeda.

{
  "name": "",
  "gallery": "",
  "graph": "",
  "portal": "",
  "graphAudience": "",
  "activeDirectoryDataLake": "",
  "batch": "",
  "media": "",
  "sqlManagement": "",
  "vmImageAliasDoc": "",
  "resourceManager": "",
  "authentication": {
    "loginEndpoint": "",
    "audiences": [
      "",
      ""
    ],
    "tenant": "",
    "identityProvider": ""
  },
  "suffixes": {
    "acrLoginServer": "",
    "azureDatalakeAnalyticsCatalogAndJob": "",
    "azureDatalakeStoreFileSystem": "",
    "azureFrontDoorEndpointSuffix": "",
    "keyvaultDns": "",
    "sqlServerHostname": "",
    "storage": ""
  }
}

Contoh

Contoh templat berikut menampilkan objek penyebaran.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "environmentOutput": {
      "type": "object",
      "value": "[environment()]"
    }
  }
}

Contoh sebelumnya menampilkan objek berikut saat digunakan ke Azure global:

{
  "name": "AzureCloud",
  "gallery": "https://gallery.azure.com/",
  "graph": "https://graph.windows.net/",
  "portal": "https://portal.azure.com",
  "graphAudience": "https://graph.windows.net/",
  "activeDirectoryDataLake": "https://datalake.azure.net/",
  "batch": "https://batch.core.windows.net/",
  "media": "https://rest.media.azure.net",
  "sqlManagement": "https://management.core.windows.net:8443/",
  "vmImageAliasDoc": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json",
  "resourceManager": "https://management.azure.com/",
  "authentication": {
    "loginEndpoint": "https://login.microsoftonline.com/",
    "audiences": [
      "https://management.core.windows.net/",
      "https://management.azure.com/"
    ],
    "tenant": "common",
    "identityProvider": "AAD"
  },
  "suffixes": {
    "acrLoginServer": ".azurecr.io",
    "azureDatalakeAnalyticsCatalogAndJob": "azuredatalakeanalytics.net",
    "azureDatalakeStoreFileSystem": "azuredatalakestore.net",
    "azureFrontDoorEndpointSuffix": "azurefd.net",
    "keyvaultDns": ".vault.azure.net",
    "sqlServerHostname": ".database.windows.net",
    "storage": "core.windows.net"
  }
}

parameter

parameters(parameterName)

Menampilkan nilai parameter. Nama parameter yang ditentukan harus ditentukan di bagian parameter templat.

Di Bicep, referensikan parameter secara langsung dengan menggunakan nama simbolisnya.

Parameter

Parameter Diperlukan Jenis Deskripsi
parameterName Ya string Nama parameter yang akan ditampilkan.

Menampilkan nilai

Nilai parameter yang ditentukan.

Keterangan

Biasanya, Anda menggunakan parameter untuk mengatur nilai sumber daya. Contoh berikut menetapkan nama situs web ke nilai parameter yang diteruskan selama penyebaran.

"parameters": {
  "siteName": {
    "type": "string"
  }
}, "resources": [
  {
    "type": "Microsoft.Web/Sites",
    "apiVersion": "2016-08-01",
    "name": "[parameters('siteName')]",
    ...
  }
]

Contoh

Contoh berikut menunjukkan penggunaan fungsi parameter yang disederhanakan.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringParameter": {
      "type": "string",
      "defaultValue": "option 1"
    },
    "intParameter": {
      "type": "int",
      "defaultValue": 1
    },
    "objectParameter": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b"
      }
    },
    "arrayParameter": {
      "type": "array",
      "defaultValue": [ 1, 2, 3 ]
    },
    "crossParameter": {
      "type": "string",
      "defaultValue": "[parameters('stringParameter')]"
    }
  },
  "variables": {},
  "resources": [],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[parameters('stringParameter')]"
    },
    "intOutput": {
      "type": "int",
      "value": "[parameters('intParameter')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[parameters('objectParameter')]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[parameters('arrayParameter')]"
    },
    "crossOutput": {
      "type": "string",
      "value": "[parameters('crossParameter')]"
    }
  }
}

Output dari contoh sebelumnya dengan nilai default adalah:

Nama Jenis Nilai
stringOutput Untai (karakter) opsi 1
intOutput Int 1
objectOutput Object {"one": "a", "two": "b"}
arrayOutput Array [1, 2, 3]
crossOutput Untai (karakter) opsi 1

Untuk informasi selengkapnya tentang menggunakan parameter, lihat Parameter dalam templat ARM.

variabel

variables(variableName)

Menampilkan nilai variabel. Nama variabel yang ditentukan harus ditentukan di bagian variabel templat.

Di Bicep, referensikan variabel secara langsung dengan menggunakan nama simbolisnya.

Parameter

Parameter Diperlukan Jenis Deskripsi
variableName Ya Untai (karakter) Nama variabel yang akan ditampilkan.

Menampilkan nilai

Nilai variabel yang ditentukan.

Keterangan

Biasanya, Anda menggunakan variabel untuk menyederhanakan templat Anda dengan membuat nilai kompleks hanya sekali. Contoh berikut adalah membuat nama unik untuk akun penyimpanan.

"variables": {
  "storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  },
  {
    "type": "Microsoft.Compute/virtualMachines",
    "dependsOn": [
      "[variables('storageName')]"
    ],
    ...
  }
],

Contoh

Contoh berikut menampilkan nilai variabel yang berbeda.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "var1": "myVariable",
    "var2": [ 1, 2, 3, 4 ],
    "var3": "[ variables('var1') ]",
    "var4": {
      "property1": "value1",
      "property2": "value2"
    }
  },
  "resources": [],
  "outputs": {
    "exampleOutput1": {
      "type": "string",
      "value": "[variables('var1')]"
    },
    "exampleOutput2": {
      "type": "array",
      "value": "[variables('var2')]"
    },
    "exampleOutput3": {
      "type": "string",
      "value": "[variables('var3')]"
    },
    "exampleOutput4": {
      "type": "object",
      "value": "[variables('var4')]"
    }
  }
}

Output dari contoh sebelumnya dengan nilai default adalah:

Nama Jenis Nilai
exampleOutput1 Untai (karakter) myVariable
exampleOutput2 Array [1, 2, 3, 4]
exampleOutput3 Untai (karakter) myVariable
exampleOutput4 Objek {"property1": "value1", "property2": "value2"}

Untuk informasi selengkapnya tentang menggunakan variabel, lihat Variabel dalam templat ARM.

Langkah berikutnya