Azure Resource Manager dağıtım modları
Kaynaklarınızı dağıtırken dağıtımın artımlı bir güncelleştirme veya tam bir güncelleştirme olduğunu belirtirsiniz. Bu iki mod arasındaki fark, Resource Manager şablonda olmayan kaynak grubundaki mevcut kaynakları nasıl işlediğidir.
her iki mod için de Resource Manager şablonda belirtilen tüm kaynakları oluşturmaya çalışır. Kaynak, kaynak grubunda zaten varsa ve ayarları değişmediyse, bu kaynak için hiçbir işlem yapılmaz. Bir kaynağın özellik değerlerini değiştirirseniz, kaynak bu yeni değerlerle güncelleştirilir. Mevcut bir kaynağın konumunu veya türünü güncelleştirmeye çalışırsanız dağıtım bir hatayla başarısız olur. Bunun yerine, ihtiyacınız olan konum veya türe sahip yeni bir kaynak dağıtın.
Varsayılan mod artımlı moddur.
Tamamlama modu
Tam modda Resource Manager kaynak grubunda var olan ancak şablonda belirtilmeyen kaynakları siler.
Not
Bir şablonu tam modda dağıtmadan önce her zaman durum işlemini kullanın. Durum, hangi kaynakların oluşturulacağını, silineceğini veya değiştirileceğini gösterir. Kaynakları istemeden silmekten kaçınmak için durum özelliğini kullanın.
Koşul false olarak değerlendirildiği için şablonunuz dağıtılmayan bir kaynak içeriyorsa, sonuç şablonu dağıtmak için kullandığınız REST API sürümüne bağlıdır. 2019-05-10'dan önceki bir sürümü kullanıyorsanız kaynak silinmez. 2019-05-10 veya üzeri sürümlerde kaynak silinir. Azure PowerShell ve Azure CLI'nın en son sürümleri kaynağı siler.
Kopyalama döngüleriyle tam modu kullanırken dikkatli olun. Kopyalama döngüsü çözümlendikten sonra şablonda belirtilmeyen tüm kaynaklar silinir.
Bir şablonda birden fazla kaynak grubuna dağıtım yaparsanız, dağıtım işleminde belirtilen kaynak grubundaki kaynaklar silinmeye uygundur. İkincil kaynak gruplarındaki kaynaklar silinmez.
Kaynak türlerinin tam mod silme işlemlerini işlemesinde bazı farklılıklar vardır. Üst kaynaklar, tam modda dağıtılan bir şablonda olmadığında otomatik olarak silinir. Bazı alt kaynaklar şablonda olmadığında otomatik olarak silinmez. Ancak, üst kaynak silinirse bu alt kaynaklar silinir.
Örneğin, kaynak grubunuz bir DNS bölgesi (Microsoft.Network/dnsZones
kaynak türü) ve bir CNAME kaydı (Microsoft.Network/dnsZones/CNAME
kaynak türü) içeriyorsa, DNS bölgesi CNAME kaydının üst kaynağıdır. Tam modda dağıtım yaparsanız ve DNS bölgesini şablonunuzda içermiyorsanız, DNS bölgesi ve CNAME kaydı silinir. DNS bölgesini şablonunuzla birlikte eklerseniz ancak CNAME kaydını dahil etmezseniz, CNAME silinmez.
Kaynak türlerinin silme işlemini nasıl işlediğinin listesi için bkz. Tam mod dağıtımları için Azure kaynaklarını silme.
Kaynak grubu kilitliyse, tam mod kaynakları silmez.
Not
Tam dağıtım modunu yalnızca kök düzeyindeki şablonlar destekler. Bağlantılı veya iç içe şablonlar için artımlı modu kullanmanız gerekir.
Abonelik düzeyi dağıtımları tam modu desteklemez.
Portal şu anda tam modu desteklemiyor.
Artımlı mod
Artımlı modda, Resource Manager kaynak grubunda var olan ancak şablonda belirtilmeyen değişmemiş kaynakları bırakır. Şablondaki kaynaklar kaynak grubuna eklenir .
Önemli
Mevcut bir kaynak artımlı modda yeniden dağıtılırken tüm özellikler yeniden uygulanır. Özellikler artımlı olarak eklenmez. Yaygın bir yanlış anlama, şablonda belirtilmeyen özelliklerin değişmeden bırakıldığını düşünmektir. Belirli özellikleri belirtmezseniz, Resource Manager dağıtımı bu değerlerin üzerine yazılması olarak yorumlar. Şablona dahil olmayan özellikler varsayılan değerlere sıfırlanır. Yalnızca güncelleştirdiğiniz değerleri değil, kaynak için varsayılan olmayan tüm değerleri belirtin. Şablondaki kaynak tanımı her zaman kaynağın son durumunu içerir. Mevcut bir kaynağın kısmi güncelleştirmesini temsil etmez.
Uyarı
Nadir durumlarda, bir kaynakta veya alt kaynaklarından birinde özellikleri belirtebilirsiniz. İki yaygın örnek, sanal ağlardaki alt ağlar ve web uygulamaları için site yapılandırma değerleridir. Böyle durumlarda artımlı güncelleştirmeleri dikkatli bir şekilde işlemeniz gerekir.
Alt ağlar için değerleri Microsoft.Network/virtualNetworks kaynağındaki özelliği aracılığıyla subnets
belirtin.
Değerleri Microsoft.Network/virtualNetworks/subnets alt kaynağı üzerinden tanımlamayın. Alt ağlar sanal ağda tanımlandığı sürece, sanal ağı yeniden dağıtabilir ve alt ağları kaybetmeyebilirsiniz.
Site yapılandırma değerleri için, değerler alt kaynak türünde Microsoft.Web/sites/config
uygulanır. Web uygulamasını yeniden dağıtıp site yapılandırma değerleri için boş bir nesne belirtirseniz, alt kaynak güncelleştirilmez. Ancak, yeni site yapılandırma değerleri sağlarsanız alt kaynak türü güncelleştirilir.
Örnek sonuç
Artımlı ve tam modlar arasındaki farkı göstermek için aşağıdaki senaryoyu göz önünde bulundurun.
Kaynak Grubu içeriği:
- Kaynak A
- Kaynak B
- Kaynak C
Şablon içeriği:
- Kaynak A
- Kaynak B
- Kaynak D
Artımlı modda dağıtıldığında kaynak grubu şunları sağlar:
- Kaynak A
- Kaynak B
- Kaynak C
- Kaynak D
Tam modda dağıtıldığında C Kaynağı silinir. Kaynak grubu aşağıdakilere sahiptir:
- Kaynak A
- Kaynak B
- Kaynak D
Dağıtım modunu ayarlama
PowerShell ile dağıtım yaparken dağıtım modunu ayarlamak için parametresini Mode
kullanın.
New-AzResourceGroupDeployment `
-Mode Complete `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\MyTemplates\storage.json
Azure CLI ile dağıtım yaparken dağıtım modunu ayarlamak için parametresini mode
kullanın.
az deployment group create \
--mode Complete \
--name ExampleDeployment \
--resource-group ExampleResourceGroup \
--template-file storage.json
Aşağıdaki örnekte artımlı dağıtım moduna ayarlanmış bir bağlantılı şablon gösterilmektedir:
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedTemplate",
"properties": {
"mode": "Incremental",
<nested-template-or-external-template>
}
}
]
Sonraki adımlar
- Resource Manager şablonları oluşturma hakkında bilgi edinmek için bkz. ARM şablonlarının yapısını ve söz dizimini anlama.
- Kaynakları dağıtma hakkında bilgi edinmek için bkz. ARM şablonları ve Azure PowerShell ile kaynakları dağıtma.
- Bir kaynak sağlayıcısının işlemlerini görüntülemek için bkz. Azure REST API.