快速入門:建立和部署範本規格
本快速入門說明如何將 Azure Resource Manager 範本 (ARM 範本) 封裝成範本規格。然後,您將部署該範本規格。您的範本規格包含會部署儲存體帳戶的 ARM 範本。
必要條件
具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
建立範本
您可以從本機範本建立範本規格。 複製下列範本並將其儲存在名為 azuredeploy.json 的本機檔案。 本快速入門假設您已儲存至 c:\Templates\azuredeploy.json 的路徑,但是您可以使用任何路徑。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.13.1.58284",
"templateHash": "13120038605368246703"
}
},
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Premium_LRS",
"Premium_ZRS",
"Standard_GRS",
"Standard_GZRS",
"Standard_LRS",
"Standard_RAGRS",
"Standard_RAGZRS",
"Standard_ZRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The storage account location."
}
},
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "The name of the storage account"
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[parameters('storageAccountName')]"
},
"storageAccountId": {
"type": "string",
"value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
}
}
}
建立範本規格
範本規格是名為 Microsoft.Resources/templateSpecs
的資源類型。 若要建立範本規格,請使用 PowerShell、Azure CLI、入口網站或 ARM 範本。
建立包含範本規格的新資源群組。
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
在該資源群組中建立範本規格。 為新的範本規格指定 storageSpec 的名稱。
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
建立包含範本規格的新資源群組。
az group create \
--name templateSpecRG \
--location westus2
在該資源群組中建立範本規格。 為新的範本規格指定 storageSpec 的名稱。
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
登入 Azure 入口網站。
搜尋範本規格。 從可用的選項中選取 [範本規格]。
選取 [匯入範本]。
選取資料夾圖示。
瀏覽至您儲存的本機範本,並加以選取。 選取開啟。
選取匯入。
提供下列值:
- 名稱:輸入範本規格名稱。例如,storageSpec
- 訂用帳戶:選取用來建立範本規格的 Azure 訂用帳戶。
- 資源群組:選取 [新建] 並輸入新的資源群組名稱。 例如,templateSpecRG。
- 位置:選取資源群組的位置。 例如,美國西部 2。
- 版本:輸入範本規格的版本。使用 1.0。
選取 [檢閱 + 建立] 。
選取 建立。
注意
建議您使用 PowerShell 或 CLI 來建立範本規格,而不是使用 ARM 範本。這些工具會自動將連結的範本轉換成連線到您主要範本的成品。 當您使用 ARM 範本來建立範本規格時,您必須手動將這些連結的範本新增為成品,而這可能會很複雜。
當您使用 ARM 範本來建立範本規格時,此範本會內嵌於資源定義中。 您需要對本機範本進行一些變更。 複製下列範本並將其儲存在本機名為 azuredeploy.json 的檔案。
注意
在內嵌的範本中,所有範本運算式都必須以第二個左括弧進行逸出。 使用 "[[
取代 "[
。 JSON 陣列仍會使用單一左括弧。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2021-05-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
},
"tags": {},
"resources": [
{
"type": "versions",
"apiVersion": "2021-05-01",
"name": "1.0",
"location": "westus2",
"dependsOn": [ "storageSpec" ],
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"storageAccountName": "[[concat('store', uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[[variables('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "[[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[[variables('storageAccountName')]"
}
}
}
},
"tags": {}
}
]
}
],
"outputs": {}
}
使用 Azure CLI 或 PowerShell 來建立新的資源群組。
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
使用 Azure CLI 或 PowerShell 部署您的範本。
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
部署範本規格
若要部署範本規格,請使用部署範本時要使用的相同部署命令。 傳入要部署的範本規格資源識別碼。
建立資源群組以包含新的儲存體帳戶。
New-AzResourceGroup `
-Name storageRG `
-Location westus2
取得範本規格的資源識別碼。
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
部署範本規格。
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
您可以提供與 ARM 範本所用參數完全相同的參數。 使用儲存體帳戶類型的參數重新部署範本規格。
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageAccountType Standard_GRS
建立資源群組以包含新的儲存體帳戶。
az group create \
--name storageRG \
--location westus2
取得範本規格的資源識別碼。
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
注意
取得範本規格識別碼,並將其指派給 Windows PowerShell 中的變數時,發生已知的問題。
部署範本規格。
az deployment group create \
--resource-group storageRG \
--template-spec $id
您可以提供與 ARM 範本所用參數完全相同的參數。 使用儲存體帳戶類型的參數重新部署範本規格。
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType='Standard_GRS'
選取您建立的範本規格。
選取部署。
提供下列值:
- 訂用帳戶:選取用來建立資源的 Azure 訂用帳戶。
- 資源群組:選取 [新建],然後輸入 storageRG。
- 儲存體帳戶類型:選取 [Standard_GRS]。
選取 [檢閱 + 建立]。
選取 建立。
複製下列範本並將其儲存在名為 storage.json 的本機檔案。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
],
"outputs": {}
}
使用 Azure CLI 或 PowerShell 為儲存體帳戶建立新的資源群組。
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
使用 Azure CLI 或 PowerShell 部署您的範本。
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--resource-group storageRG \
--template-file "c:\Templates\storage.json"
授予存取權
如果您想要讓貴組織中的其他使用者部署您的範本規格,您必須授與他們讀取權限。 您可以將「讀者」角色指派給資源群組的 Microsoft Entra 群組,其中包含您想要共用的範本規格。 如需詳細資訊,請參閱教學課程:使用 Azure PowerShell 將 Azure 資源的存取權授與群組 (部分機器翻譯)。
更新範本
假設您在範本規格中發現想要執行的範本變更。下列範本類似於您先前的範本,不同之處在於其針對儲存體帳戶名稱新增了前置詞。 複製下列範本,並更新您的 azuredeploy.json 檔案。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"namePrefix": {
"type": "string",
"maxLength": 11,
"defaultValue": "store",
"metadata": {
"description": "Prefix for storage account name"
}
}
},
"variables": {
"storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
更新範本規格版本
將名為 2.0
的新版本新增至現有範本規格,而不是針對修改過的範本建立新範本規格。使用者可以選擇任一版本來進行部署。
為範本規格建立新版本。
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
若要部署新版本,請取得 2.0
版本的資源識別碼。
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
部署該版本。 提供儲存體帳戶名稱的前置詞。
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-namePrefix "demoaccount"
為範本規格建立新版本。
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
若要部署新版本,請取得 2.0
版本的資源識別碼。
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
部署該版本。 提供儲存體帳戶名稱的前置詞。
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters namePrefix='demoaccount'
在您的範本規格中,選取 [建立新版本]。
將新版本命名為 2.0
並選擇性地新增附註。 選取 [編輯範本]。
以您更新的範本取代範本內容。 選取 [檢閱 + 儲存]。
選取儲存變更。
若要部署新版本,請選取 [版本]
針對您想要部署的版本,選取三個點及 [部署]。
填寫欄位 (如同部署舊版時所執行的動作)。
選取 [檢閱 + 建立]。
選取 建立。
同樣地,您必須對本機範本進行一些變更,使其能夠使用範本規格。 複製下列範本並在本機將其儲存為 azuredeploy.json。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2021-05-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
},
"tags": {},
"resources": [
{
"type": "versions",
"apiVersion": "2021-05-01",
"name": "2.0",
"location": "westus2",
"dependsOn": [ "storageSpec" ],
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"namePrefix": {
"type": "string",
"maxLength": 11,
"defaultValue": "store",
"metadata": {
"description": "Prefix for storage account name"
}
}
},
"variables": {
"storageAccountName": "[[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[[variables('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "[[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[[variables('storageAccountName')]"
}
}
}
},
"tags": {}
}
]
}
],
"outputs": {}
}
若要將新版本新增至範本規格,請使用 Azure CLI 或 PowerShell 來部署您的範本。
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
複製下列範本並將其儲存在名為 storage.json 的本機檔案。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '2.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
],
"outputs": {}
}
使用 Azure CLI 或 PowerShell 部署您的範本。
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--resource-group storageRG \
--template-file "c:\Templates\storage.json"
清除資源
若要清除您在本快速入門中部署的資源,請刪除您所建立的兩個資源群組。
在 Azure 入口網站中,選取左側功能表中的 [資源群組]。
在 [依名稱篩選] 欄位中輸入資源群組名稱 (templateSpecRG 和 storageRG)。
選取資源群組名稱。
從頂端功能表中選取 [刪除資源群組]。
下一步
若要了解如何建立包含連結範本的範本規格,請參閱建立連結範本的範本規格。