ARM Şablonları Yazma
Bir depolama hesabı ve VM dağıtmak için JSON biçiminde parametreli bir ARM şablonu oluşturun; şablonları yeniden kullanılabilir kılmak için şablon işlevlerini ve değişkenleri kullanın.
ARM Şablonları Yazma, CoddyKit'te ücretsiz bir Azure Fundamentals dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Azure Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Azure Fundamentals kursu toplamda 4 dersten oluşur.
ARM Şablonları Neden Kullanılır?
ARM şablonları, Azure altyapısını JSON biçiminde kod olarak tanımlamanızı sağlar. Bu sayede uygulama kodunuzla birlikte sürüm denetimine alınabilen, tekrarlanabilir ve tutarlı dağıtımlar yapabilirsiniz. Şablonlar eşit-etkilidir; aynı şablonun birden çok kez çalıştırılması aynı sonucu üretir. Bu da değişikliklerden sonra şablonları yeniden uygulamayı güvenli hâle getirir.
Şablon İskeleti ve Şema
Her ARM şablonu, şablon şeması URL'sini gösteren bir $schema özelliğiyle ve ardından bir contentVersion dizesiyle başlar. Şema, Azure portalına ve düzenleyici eklentilerine şablonun nasıl doğrulanacağını ve IntelliSense desteğinin nasıl sağlanacağını bildirir. Ardından gelen beş ana bölüm şunlardır: parameters, variables, functions, resources ve outputs.
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
'contentVersion': '1.0.0.0',
'parameters': {},
'variables': {},
'functions': [],
'resources': [],
'outputs': {}
}Parametreleri Tanımlama
Parametreler, dağıtım sırasında girdileri kabul ederek şablonları yeniden kullanılabilir hâle getirir. Her parametrenin bir type'ı (string, int, bool, object, array, secureString), isteğe bağlı bir defaultValue'su ve doğrulama için isteğe bağlı allowedValues değerleri vardır. Parolalar için secureString kullanılması, değerin dağıtım geçmişine hiçbir zaman kaydedilmemesini sağlar.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24,
"metadata": { "description": "Globally unique storage account name" }
},
"sku": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": ["Standard_LRS", "Standard_GRS", "Premium_LRS"]
}
}Hesaplanan Değerler İçin Değişkenleri Kullanma
Değişkenler, parametrelerden veya şablon işlevlerinden hesaplanan değerleri depolar; böylece tekrarı azaltır ve şablonların bakımını kolaylaştırır. Değişkenler bir kez değerlendirilir ve [variables('name')] ifadesi kullanılarak resources bölümünün tamamında başvurulur. Yaygın bir yaklaşım, bir parametreyi benzersiz bir sonekle birleştirerek kaynak adı oluşturmaktır.
"variables": {
"uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
"location": "[resourceGroup().location]"
}Kaynakları Tanımlama
resources dizisi, ARM şablonunun merkezidir. Her öğe, zorunlu alanlara sahip bir Azure kaynağını açıklar: type, apiVersion, name ve location. apiVersion, kaynak sağlayıcısı şemasının sürümünü sabitler; en yeni özelliklere erişmek ve kullanımdan kaldırılmış özelliklerden kaçınmak için her zaman güncel ve kararlı bir sürüm kullanın.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('uniqueStorageName')]",
"location": "[variables('location')]",
"sku": { "name": "[parameters('sku')]" },
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true,
"minimumTlsVersion": "TLS1_2"
}
}
]Şablon İşlevleri ve İfadeleri
ARM şablonu ifadeleri köşeli parantez içine alınır [...] ve dizeler, diziler, nesneler ve kaynak kimlikleri için yerleşik işlevleri destekler. Yaygın işlevler arasında concat(), resourceGroup(), resourceId(), uniqueString() ve parameters() bulunur. Bu işlevler yerel olarak değil, dağıtım sırasında ARM tarafından sunucu tarafında değerlendirilir.
// Reference a resource ID inside a template
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'myVNet', 'mySubnet')]"
// Build a unique, deterministic name
"name": "[concat('storage', uniqueString(resourceGroup().id))]"
// Conditionally include a resource
"condition": "[equals(parameters('deployStorage'), true)]"Çıktılar: Değerleri Döndürme
outputs bölümü, başarılı bir dağıtımdan sonra ARM'nin döndüreceği değerleri tanımlar. Çıktılar, şablonları birbirine bağlamak için gereklidir: bir ağ şablonunu dağıtıp alt ağ kaynak kimliğini çıktı olarak alır, ardından bunu bir VM şablonuna parametre olarak iletirsiniz. Çıktılar, dağıtımdaki kaynak özellikleri de dâhil olmak üzere herhangi bir ifadeye başvurabilir.
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('uniqueStorageName')]"
},
"blobEndpoint": {
"type": "string",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
}
}Bağlantılı ve İç İçe Şablonlar
Karmaşık mimariler için ARM, bağlantılı şablonları (haricî şablon URL'lerine başvuran) ve iç içe şablonları (Microsoft.Resources/deployments türü kullanılarak resources dizisine gömülen) destekler. Bu sayede büyük bir altyapı dağıtımını modüler ve yeniden kullanılabilir parçalara ayırabilir, giriş noktası olarak tek bir düzenleme şablonunu koruyabilirsiniz.
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "networkDeploy",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/contoso/templates/main/network.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"vnetName": { "value": "[parameters('vnetName')]" }
}
}
}Parametre Dosyaları
Parametreleri komut satırında geçirmek yerine bunları ayrı bir parametre dosyasında depolayın; bu dosya, ad-değer çiftlerini içeren bir parameters nesnesine sahip bir JSON dosyasıdır. Parametre dosyaları ortama özgü olabilir (örneğin, dev.parameters.json, prod.parameters.json) ve kaynak denetimine kaydedilebilir. Böylece hassas değerler düz metin yerine Azure Key Vault başvurularında tutulur.
// dev.parameters.json
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#',
'contentVersion': '1.0.0.0',
'parameters': {
'storageAccountName': { 'value': 'devstorageacct' },
'sku': { 'value': 'Standard_LRS' }
}
}
// Deploy with parameters file
// az deployment group create -g MyRG -f azuredeploy.json -p dev.parameters.jsonŞablonları Dağıtma ve Doğrulama
Bir şablonu kaynak grubuna dağıtmak için Azure CLI komutu az deployment group create komutunu kullanın. Üretime dağıtmadan önce şema ve mantık hatalarını yakalamak için az deployment group validate, kaynak değişikliklerini önizlemek için de az deployment group what-if komutunu çalıştırın. Bu üç komut güvenli bir dağıtım işlem hattı oluşturur: doğrula, önizle, dağıt.
# Step 1: Validate the template syntax
az deployment group validate \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 2: Preview changes
az deployment group what-if \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 3: Deploy
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.jsonARM Şablonu En İyi Uygulamaları
Şu ARM şablonu en iyi uygulamalarını izleyin: ortama özgü değerler için parametreleri kullanın, tekrarı önlemek için değişkenleri kullanın, API sürümlerini kararlı sürümlere sabit101, parolalar için secureString kullanın, parametrelere meta veri açıklamaları ekleyin ve büyük şablonları bağlantılı modüllere ayırın. Şablonları bir Git deposunda saklayın ve denetlenebilirlik için bir CI/CD işlem hattı üzerinden dağıtın.
Hızlı Kontrol
Bu derste ele alınan Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: ARM şablonları, Azure altyapısını bildirimsel olarak tanımlayan JSON belgeleridir; parametreler ve değişkenler, şablonları yeniden kullanılabilir ve bakımı kolay hâle getirir; validate, what-if, deploy iş akışı ise güvenli ve tekrarlanabilir dağıtımlar sağlar. Sırada ARM JSON üzerinde modern bir soyutlama olan Bicep'i inceleyeceğiz.
Sıkça Sorulan Sorular
“ARM Şablonları Yazma” dersi ücretsiz mi?
Evet — “ARM Şablonları Yazma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Azure Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Azure Fundamentals kursu toplamda 4 dersten oluşur.
“ARM Şablonları Yazma” dersinde ne öğreneceğim?
Bir depolama hesabı ve VM dağıtmak için JSON biçiminde parametreli bir ARM şablonu oluşturun; şablonları yeniden kullanılabilir kılmak için şablon işlevlerini ve değişkenleri kullanın. Azure Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Azure Fundamentals öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Azure Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“ARM Şablonları Yazma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Azure Fundamentals dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Azure Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Azure Resource Manager Nasıl Çalışır?
- ARM Şablonları Yazma
- Bicep: Modern Azure IaC
- Azure'da Terraform