Alıştırma - Azure Resource Manager şablonunuza parametreler ve çıktılar ekleme
Bu alıştırmada, dağıtım sırasında Azure depolama hesabı adını tanımlamak için bir parametre ekleyeceksiniz. Ardından hangi depolama hesabı SKU'larına izin verilip bu dağıtım için hangisinin kullanılacağını tanımlamak için bir parametre ekleyeceksiniz. Ayrıca, dağıtım işleminin ilerleyen bölümlerinde kullanabileceğiniz bir çıkış ekleyerek Azure Resource Manager şablonuna (ARM şablonu) kullanışlılık da ekleyeceksiniz.
ARM şablonu için parametreler oluşturma
Burada, çalışma zamanında ayarlanabilen parametreler ekleyerek ARM şablonunuzu daha esnek hale getireceksiniz. storageName
değeri için bir parametre oluşturun.
Visual Studio Code'daki azuredeploy.json dosyasında, imlecinizi parameters özniteliğindeki küme ayraçlarının içine yerleştirin. Şuna benzer:
"parameters":{},
Enter tuşunu kullanın ve sonra par girin. İlgili kod parçacıklarının listesini görürsünüz. Şablona genel bir parametre ekleyen new-parameter öğesini seçin. Şunun gibi görünür:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
parametresini parameter1 olan değerini storageName olarak değiştirin ve türünü dize olarak bırakın. minLength değeri olarak 3 ve maxLength değeri olarak da 24 ekleyin. The name of the Azure storage resource (Azure depolama kaynağının adı) açıklamasını ekleyin.
Parametre bloğu şu şekilde görünmelidir:
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Hem
name
hem dedisplayName
değerlerinderesources
bloğundaki yeni parametreyi kullanın. Dosyanın tamamı şu şekilde görünür:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } }, "functions": [], "variables": {}, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS", } } ], "outputs": {} }
Dosyayı kaydedin.
Parametreli ARM şablonunu dağıtma
Burada, bu dağıtımın ne yaptığını daha iyi yansıtacak ve yeni parametre için bir değer dolduracak şekilde dağıtımın adını değiştireceksiniz.
Terminalde aşağıdaki Azure CLI komutlarını çalıştırın. Bu kod parçacığı daha önce kullandığınız kodla aynıdır ama dağıtımın adı değişmiştir. storageName
parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son ünitede oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today
az deployment group create \
--name $DeploymentName \
--template-file $templateFile \
--parameters storageName={your-unique-name}
Terminalde aşağıdaki Azure PowerShell komutlarını çalıştırın. Bu kod parçacığı daha önce kullandığınız kodla aynıdır ama dağıtımın adı değişmiştir. storageName
parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son ünitede oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Dağıtımınızı denetleme
Dağıtım tamamlandığında tarayıcınızda Azure portalına geri dönün. Kaynak grubunuza gidin ve şimdi 3 Başarılı dağıtım olduğunu görün. Bu bağlantıyı seçin.
Üç dağıtımın da listede olduğuna dikkat edin.
Daha önce yaptığınız gibi addnameparameter dağıtımını inceleyin.
İzin verilen değerleri sınırlandırmak için başka bir parametre ekleme
Burada, parametre için izin verilen değerleri sınırlamak için parametreleri kullanacaksınız.
İmlecinizi
storageName
parametresinin kapanış ayracının arkasına yerleştirin. Bir virgül ekleyin ve Enter tuşuna basın.Yeniden par yazın ve new-parameter öğesini seçin.
Yeni genel parametreyi aşağıdaki şekilde değiştirin:
"storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }
Burada, bu parametrenin izin vereceği değerleri listeliyorsunuz. Şablon izin verilmeyen bir değerle çalıştırılırsa dağıtım başarısız olur.
Bu parametreye bir açıklama ekleyin.
ARM şablonları
//
ve/* */
açıklamalarını destekler.storageSKU
parametresini kullanmak için resources bölümünü güncelleştirin. Bu adımı kolaylaştırmak için Visual Studio Code’da IntelliSense’den yararlanın."sku": { "name": "[parameters('storageSKU')]" }
Dosyanın tamamı şu şekilde görünür:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } }, "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] } }, "functions": [], "variables": {}, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]", } } ], "outputs": {} }
Dosyayı kaydedin.
ARM şablonunu dağıtma
Burada, izin verilenler listesinde yer alan bir storageSKU
parametreyi kullanarak başarıyla dağıtacaksınız. Ardından, izin verilenler listesinde olmayan bir storageSKU
parametre kullanarak şablonu dağıtmayı deneyeceksiniz. İkinci dağıtım beklendiği gibi başarısız olacaktır.
Şablonu dağıtmak için aşağıdaki komutları çalıştırın.
storageName
parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_GRS storageName={your-unique-name}
Bu dağıtımın bitmesini bekleyin. Bu dağıtım beklendiği gibi başarılı olur. İzin verilen değerler, şablonunuzun kullanıcılarının kaynak için çalışmayan parametre değerlerini geçirmesini engeller. Geçersiz bir SKU sağladığınızda ne olacağını görelim.
Şablonu izin verilmeyen bir parametreyle dağıtmak için aşağıdaki komutları çalıştırın. Burada
storageSKU
parametresini Basic olarak değiştirdiniz.storageName
parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Basic storageName={your-unique-name}
Bu dağıtım başarısız olur. Hataya dikkat edin.
Şablonu dağıtmak için aşağıdaki komutları çalıştırın.
storageName
parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRS
Bu dağıtımın bitmesini bekleyin. Bu dağıtım beklendiği gibi başarılı olur. İzin verilen değerler, şablonunuzun kullanıcılarının kaynak için çalışmayan parametre değerlerini geçirmesini engeller. Geçersiz bir SKU sağladığınızda ne olacağını görelim.
Şablonu izin verilmeyen bir parametreyle dağıtmak için aşağıdaki komutları çalıştırın. Burada
storageSKU
parametresini Basic olarak değiştirdiniz.storageName
parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Basic
Bu dağıtım başarısız olur. Hataya dikkat edin.
ARM şablonuna çıkış ekleme
Burada, depolama hesabı kaynağının outputs
uç noktalarının çıkışını almak için ARM şablonunun bölümüne ekleyeceksiniz.
Visual Studio Code'daki azuredeploy.json dosyasında imlecinizi outputs özniteliğindeki
"outputs":{},
küme ayraçlarının içine yerleştirin.Enter tuşuna basın ve ardından girin. İlgili kod parçacıklarının listesini alırsınız. Yeni çıkış'ı seçin. Bu seçim şablona genel bir çıkış ekler. Şu şekilde görünür:
"outputs": { "output1": { "type": "string", "value": "value" }
"output1" değerini "storageEndpoint" olarak değiştirin ve değerini "object" olarak değiştirin.
type
değerinivalue
"[reference(parameters('storageName')).primaryEndpoints]" olarak değiştirin. Bu ifade, önceki ünitede açıklanan ve uç nokta verilerini alan ifadedir. Nesne türü olarak belirttiğimiz için nesne JSON biçiminde döndürülecektir."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
Dosyayı kaydedin.
ARM şablonunu çıktı ile dağıtma
Burada şablonu dağıtacak ve uç noktaların çıkışını JSON olarak göreceksiniz. storageName
parametresi için benzersiz bir ad girmeniz gerekir. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.
Şablonu dağıtmak için aşağıdaki komutları çalıştırın. {your-unique-name} öğesini, size özel olan benzersiz bir dizeyle değiştirdiğinizden emin olun.
templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addoutputs-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_LRS storageName={your-unique-name}
Çıktıya dikkat edin.
Şablonu dağıtmak için aşağıdaki komutları çalıştırın. {your-unique-name} öğesini, size özel olan benzersiz bir dizeyle değiştirdiğinizden emin olun.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRS
Çıktıya dikkat edin.
Çıktı dağıtımınızı denetleme
Azure portalında addOutputs dağıtımına gidin. Çıktıyı burada da bulabilirsiniz.