Hızlı Başlangıç: Şablon oluşturma ve dağıtma belirtimi
Makale 03/20/2024
5 katılımcı
Geri Bildirim
Bu makalede
Bu hızlı başlangıçta bir Azure Resource Manager şablonunu (ARM şablonu) şablon belirtimine nasıl paketlediğiniz gösterilmektedir . Ardından bu şablon belirtimlerini dağıtırsınız. Şablon belirtiminiz, depolama hesabı dağıtan bir ARM şablonu içerir.
Bahşiş
ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz . Daha fazla bilgi edinmek için bkz . Hızlı Başlangıç: Bicep ile şablon belirtimi oluşturma ve dağıtma.
Ön koşullar
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun .
Şablon oluşturma
Yerel bir şablondan şablon belirtimi oluşturursunuz. Aşağıdaki şablonu kopyalayın ve yerel olarak azuredeploy.json adlı bir dosyaya kaydedin. Bu hızlı başlangıçta c:\Templates\azuredeploy.json yoluna kaydettiğiniz varsayılır, ancak herhangi bir yolu kullanabilirsiniz.
{
"$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'))]"
}
}
}
Şablon belirtimi oluşturma
Şablon belirtimi adlı Microsoft.Resources/templateSpecs
bir kaynak türüdür. Şablon belirtimi oluşturmak için PowerShell, Azure CLI, portal veya ARM şablonu kullanın.
Şablon belirtimini içerecek yeni bir kaynak grubu oluşturun.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
Bu kaynak grubunda şablon belirtimini oluşturun. Yeni şablona storageSpec adını verin.
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
Şablon belirtimini içerecek yeni bir kaynak grubu oluşturun.
az group create \
--name templateSpecRG \
--location westus2
Bu kaynak grubunda şablon belirtimini oluşturun. Yeni şablona storageSpec adını verin.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
Azure Portal oturum açın.
Şablon belirtimlerini arayın. Kullanılabilir seçeneklerden Şablon belirtimleri'ni seçin .
Şablonu içeri aktar'ı seçin .
Klasör simgesini seçin.
Kaydettiğiniz yerel şablona gidin ve seçin. Aç 'ı seçin.
İçeri aktar 'ı seçin.
Aşağıdaki değerleri girin:
Ad : Şablon belirtimi için bir ad girin. Örneğin, storageSpec
Abonelik : Şablon belirtimini oluşturmak için kullanılan azure aboneliğini seçin.
Kaynak Grubu : Yeni oluştur'u seçin ve ardından yeni bir kaynak grubu adı girin. Örneğin templateSpecRG .
Konum : Kaynak grubu için bir konum seçin. Örneğin, Batı ABD 2 .
Sürüm : Şablon belirtimi için bir sürüm girin. 1.0 kullanın .
Gözden geçir + Oluştur ’u seçin.
Oluştur seçeneğini belirleyin.
Dekont
ARM şablonu kullanmak yerine, şablon belirtiminizi oluşturmak için PowerShell veya CLI kullanmanızı öneririz. Bu araçlar, bağlantılı şablonları otomatik olarak ana şablonunuzla bağlantılı yapıtlara dönüştürür. Şablon belirtimini oluşturmak için BIR ARM şablonu kullandığınızda, bu bağlantılı şablonları el ile yapıt olarak eklemeniz gerekir; bu karmaşık olabilir.
Şablon belirtimini oluşturmak için bir ARM şablonu kullandığınızda, şablon kaynak tanımına eklenir. Yerel şablonunuzda yapmanız gereken bazı değişiklikler vardır. Aşağıdaki şablonu kopyalayın ve yerel olarak azuredeploy.json olarak kaydedin.
Dekont
Ekli şablonda, tüm şablon ifadelerinin ikinci bir sol köşeli ayraçla kaçış noktası olmalıdır. yerine "[
kullanın"[[
. JSON dizileri yine de tek bir sol köşeli ayraç kullanır.
{
"$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": {}
}
Yeni bir kaynak grubu oluşturmak için Azure CLI veya PowerShell kullanın.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
Şablonunuzu Azure CLI veya PowerShell ile dağıtın.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
Şablon belirtimlerini dağıtma
Şablon belirtimini dağıtmak için, şablon dağıtmak için kullandığınız dağıtım komutlarının aynısını kullanın. Dağıtılacak şablon belirtiminin kaynak kimliğini geçirin.
Yeni depolama hesabını içerecek bir kaynak grubu oluşturun.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
Şablon belirtiminin kaynak kimliğini alın.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
Şablon belirtimini dağıtın.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
Parametreleri bir ARM şablonu için yaptığınız gibi sağlarsınız. Şablon belirtimini depolama hesabı türü için bir parametreyle yeniden dağıtın.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageAccountType Standard_GRS
Yeni depolama hesabını içerecek bir kaynak grubu oluşturun.
az group create \
--name storageRG \
--location westus2
Şablon belirtiminin kaynak kimliğini alın.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
Dekont
Şablon belirtim kimliğini alma ve Windows PowerShell'de bir değişkene atama ile ilgili bilinen bir sorun vardır.
Şablon belirtimini dağıtın.
az deployment group create \
--resource-group storageRG \
--template-spec $id
Parametreleri bir ARM şablonu için yaptığınız gibi sağlarsınız. Şablon belirtimini depolama hesabı türü için bir parametreyle yeniden dağıtın.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType='Standard_GRS'
Oluşturduğunuz şablon belirtimini seçin.
Dağıt 'ı seçin.
Aşağıdaki değerleri girin:
Abonelik : Kaynağı oluşturmak için bir Azure aboneliği seçin.
Kaynak grubu : Yeni oluştur'u seçin ve storageRG girin .
hesap türünü Depolama: Standard_GRS seçin .
Gözden geçir ve oluştur ’u seçin.
Oluştur seçeneğini belirleyin.
Aşağıdaki şablonu kopyalayın ve yerel olarak storage.json adlı bir dosyaya kaydedin.
{
"$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": {}
}
Depolama hesabı için yeni bir kaynak grubu oluşturmak için Azure CLI veya PowerShell kullanın.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
Şablonunuzu Azure CLI veya PowerShell ile dağıtın.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--resource-group storageRG \
--template-file "c:\Templates\storage.json"
Erişim verme
Kuruluşunuzdaki diğer kullanıcıların şablon belirtiminizi dağıtmasına izin vermek istiyorsanız, onlara okuma erişimi vermeniz gerekir. Okuyucu rolünü, paylaşmak istediğiniz şablon belirtimlerini içeren kaynak grubu için bir Microsoft Entra grubuna atayabilirsiniz. Daha fazla bilgi için bkz . Öğretici: Azure PowerShell kullanarak Azure kaynaklarına grup erişimi verme.
Şablonu güncelleştirme
Şablon belirtiminizde şablonda yapmak istediğiniz bir değişikliği tanımladığınız varsayalım. Aşağıdaki şablon, depolama hesabı adı için bir ön ek eklemesi dışında önceki şablonunuzla benzerdir. Aşağıdaki şablonu kopyalayın ve azuredeploy.json dosyanızı güncelleştirin.
{
"$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')]"
}
}
}
Şablon belirtim sürümünü güncelleştirme
Düzeltilen şablon için yeni bir şablon belirtimi oluşturmak yerine, var olan şablon belirtimine adlı 2.0
yeni bir sürüm ekleyin. Kullanıcılar dağıtılacak iki sürümü de seçebilir.
Şablon belirtimi için yeni bir sürüm oluşturun.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
Yeni sürümü dağıtmak için 2.0
sürümün kaynak kimliğini alın.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
Bu sürümü dağıtın. Depolama hesabı adı için bir ön ek sağlayın.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-namePrefix "demoaccount"
Şablon belirtimi için yeni bir sürüm oluşturun.
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
Yeni sürümü dağıtmak için 2.0
sürümün kaynak kimliğini alın.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
Bu sürümü dağıtın. Depolama hesabı adı için bir ön ek sağlayın.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters namePrefix='demoaccount'
Şablon belirtiminizde Yeni sürüm oluştur'u seçin .
Yeni sürümü 2.0
adlandırın ve isteğe bağlı olarak notlar ekleyin. Şablonu düzenle'yi seçin .
Şablonun içeriğini güncelleştirilmiş şablonla değiştirin. Gözden Geçir + Kaydet'i seçin .
Değişiklikleri Kaydet 'i seçin.
Yeni sürümü dağıtmak için Sürümler'i seçin
Dağıtmak istediğiniz sürüm için üç noktayı ve Dağıt'ı seçin.
Önceki sürümü dağıtırken yaptığınız gibi alanları doldurun.
Gözden geçir ve oluştur ’u seçin.
Oluştur seçeneğini belirleyin.
Şablon belirtimleriyle çalışmasını sağlamak için yerel şablonunuzda bazı değişiklikler yapmanız gerekir. Aşağıdaki şablonu kopyalayın ve yerel olarak azuredeploy.json olarak kaydedin.
{
"$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": {}
}
Şablon belirtiminize yeni sürümü eklemek için şablonunuzu Azure CLI veya PowerShell ile dağıtın.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
Aşağıdaki şablonu kopyalayın ve yerel olarak storage.json adlı bir dosyaya kaydedin.
{
"$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": {}
}
Şablonunuzu Azure CLI veya PowerShell ile dağıtın.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--resource-group storageRG \
--template-file "c:\Templates\storage.json"
Kaynakları temizleme
Bu hızlı başlangıçta dağıttığınız kaynağı temizlemek için oluşturduğunuz her iki kaynak grubunu da silin.
Azure portalında sol menüden Kaynak grubu’nu seçin.
Ada göre filtrele alanına kaynak grubu adını (templateSpecRG ve storageRG) girin.
Kaynak grubu adını seçin.
Üstteki menüden Kaynak grubunu sil’i seçin.
Sonraki adımlar
Bağlantılı şablonlar içeren bir şablon belirtimi oluşturma hakkında bilgi edinmek için bkz . Bağlantılı şablonun şablon belirtimini oluşturma.