ARM şablonu dağıtımı what-if işlemi
Azure Resource Manager şablonu (ARM şablonu) dağıtılmadan önce, gerçekleşen değişikliklerin önizlemesini yapabilirsiniz. Azure Resource Manager, şablonu dağıtırsanız kaynakların ne şekilde değişdiklerinizi görmenizi sağlamak için ne yapılır işlemini sağlar. what-if komutu var olan kaynaklarda herhangi bir değişiklik yapmaz. Bunun yerine belirtilen şablonun dağıtılması halinde gerçekleştirilecek değişikliklerle ilgili tahminde bulunur.
Azure PowerShell, Azure clı veya REST API işlemleri ile durum işlemini kullanabilirsiniz. Kaynak grubu, abonelik, yönetim grubu ve kiracı düzeyinde dağıtımlar için ne desteklenir?
Microsoft Learn
Ne yapılır hakkında daha fazla bilgi edinmek ve uygulamalı yönergeler için bkz. Microsoft Learn' yi kullanarak Azure dağıtım değişikliklerini önizleme .
Azure PowerShell modülünü Install
PowerShell 'de ne olduğunu kullanmak için az Module sürüm 4,2 veya sonraki bir sürümünü kullanmanız gerekir.
Modülünü yüklemek için şunu kullanın:
Install-Module -Name Az -Force
Modül yükleme hakkında daha fazla bilgi için bkz. yükleme Azure PowerShell.
Azure CLı modülünü yükler
Azure CLı 'de ne olduğunu kullanmak için Azure CLı 2.14.0 veya sonraki bir sürüme sahip olmanız gerekir. Gerekirse Azure CLI'nin en son sürümünü yükleyin.
Sonuçlara bakın
PowerShell veya Azure CLı 'de ne olursa kullanın, çıktı, farklı değişiklik türlerini görmenizi sağlayan renk kodlu sonuçlar içerir.

Metin çıktısı:
Resource and property changes are indicated with these symbols:
- Delete
+ Create
~ Modify
The deployment will update the following scope:
Scope: /subscriptions/./resourceGroups/ExampleGroup
~ Microsoft.Network/virtualNetworks/vnet-001 [2018-10-01]
- tags.Owner: "Team A"
~ properties.addressSpace.addressPrefixes: [
- 0: "10.0.0.0/16"
+ 0: "10.0.0.0/15"
]
~ properties.subnets: [
- 0:
name: "subnet001"
properties.addressPrefix: "10.0.0.0/24"
]
Resource changes: 1 to modify.
Not
Ne yapılır işlemi başvuru işleviniçözümleyemezse. Başvuru işlevini içeren bir şablon ifadesine her bir özellik ayarladığınızda, özelliğin değiştirileceği durum raporları görüntülenir. Bu davranış, özelliğin geçerli değerini (örneğin true veya false bir Boolean değeri için) çözümlenmemiş şablon ifadesiyle karşılaştırdığı için oluşur. Kuşkusuz, bu değerler eşleşmeyecektir. Şablonu dağıttığınızda, özellik yalnızca şablon ifadesi farklı bir değere çözümlenirse değişir.
Durum komutları
Azure PowerShell
Bir şablonu dağıtımdan önce değişiklikleri önizlemek için New-AzResourceGroupDeployment veya New-azsubscriptiondeploymentkomutunu kullanın. -WhatifDağıtım komutuna anahtar parametresini ekleyin.
New-AzResourceGroupDeployment -Whatifkaynak grubu dağıtımları içinNew-AzSubscriptionDeployment -Whatif``New-AzDeployment -Whatifabonelik düzeyinde dağıtımlar için
-ConfirmDeğişiklikleri önizlemek ve dağıtıma devam etmek isteyip istemediğiniz sorulduğunda anahtar parametresini kullanabilirsiniz.
New-AzResourceGroupDeployment -Confirmkaynak grubu dağıtımları içinNew-AzSubscriptionDeployment -Confirm``New-AzDeployment -Confirmabonelik düzeyinde dağıtımlar için
Yukarıdaki komutlar el ile inceleyebilmeniz için bir metin Özeti döndürür. Program aracılığıyla değişiklikler için inceleyebileceğiniz bir nesne almak için Get-Azresourcegroupdeploymentwhatıresult veya Get-azsubscriptiondeploymentwhatıresult' ı kullanın.
$results = Get-AzResourceGroupDeploymentWhatIfResultkaynak grubu dağıtımları için$results = Get-AzSubscriptionDeploymentWhatIfResult``$results = Get-AzDeploymentWhatIfResultabonelik düzeyi dağıtımlar için veya
Azure CLI
Bir şablonu dağıtımdan önce değişiklikleri önizlemek için şunu kullanın:
- az dağıtım grubu kaynak grubu dağıtımları için ne yapılır?
- abonelik düzeyi dağıtımlar için az Deployment Sub
- Yönetim grubu dağıtımları için az Deployment mg ne-if
- az dağıtım kiracısı kiracı dağıtımları için ne yapılır?
--confirm-with-what-if -c Değişiklikleri önizlemek ve dağıtıma devam etmek isteyip istemediğiniz sorulduğunda anahtarı (veya kısa biçimini) kullanabilirsiniz. Bu anahtarı şu şekilde ekleyin:
- az dağıtım grubu oluştur
- az Deployment Sub Create.
- az Deployment mg Create
- az Deployment Tenant Create
Örneğin, az deployment group create --confirm-with-what-if -c kaynak grubu dağıtımları için veya kullanın.
Yukarıdaki komutlar el ile inceleyebilmeniz için bir metin Özeti döndürür. Değişiklikler için programlı olarak inceleyebileceğiniz bir JSON nesnesi almak için --no-pretty-print anahtarını kullanın. Örneğin, az deployment group what-if --no-pretty-print kaynak grubu dağıtımları için kullanın.
Sonuçları renkler olmadan döndürmek istiyorsanız, Azure CLI yapılandırma dosyanızı açın. No_color Evet olarak ayarlayın.
Azure REST API
REST API için şunu kullanın:
- Dağıtımlar- kaynak grubu dağıtımları için What If
- Dağıtımlar-abonelik dağıtımları Için Abonelik kapsamında What If
- Dağıtımlar-yönetim grubu dağıtımları için Yönetim grubu kapsamındaki What If
- Dağıtımlar- kiracı dağıtımlarında kiracı kapsamındaki What If.
Değişiklik türleri
Ne yapılır işlemi altı farklı değişiklik türünü listeler:
Oluştur: kaynak şu anda mevcut değil, ancak şablonda tanımlandı. Kaynak oluşturulacaktır.
Sil: Bu değişiklik türü yalnızca dağıtım için tamamlanmış mod kullanılırken geçerlidir. Kaynak mevcuttur ancak şablonda tanımlanmamıştır. Tamamlama modunda kaynak oluşturulacaktır. Yalnızca tamamlanmış mod silme işlemini destekleyen kaynaklar bu değişiklik türüne dahil edilir.
Yoksay: kaynak var, ancak şablonda tanımlı değil. Kaynak dağıtılmayacak veya değiştirilmeyecektir.
NOCHANGE: kaynak vardır ve şablonda tanımlanmıştır. Kaynak yeniden dağıtılacaktır ancak kaynağın özellikleri değişmeyecektir. Bu değişiklik türü, varsayılan değer olan RESULTFORMAT ayarlandığında döndürülür
FullResourcePayloads.Değiştir: kaynak vardır ve şablonda tanımlanmıştır. Kaynak yeniden dağıtılacaktır ve kaynağın özellikleri değişecektir. Bu değişiklik türü, varsayılan değer olan RESULTFORMAT ayarlandığında döndürülür
FullResourcePayloads.Dağıtım: kaynak vardır ve şablonda tanımlanmıştır. Kaynak yeniden dağıtılacaktır. Kaynağın özellikleri değişebilir veya değişmeyebilir. İşlem, özelliklerin değiştirilip değiştirilmeyeceği konusunda karar vermek için yeterli bilgiye sahip olmadığında bu değişiklik türünü döndürür. Bu durumu yalnızca RESULTFORMAT olarak ayarlandığında görürsünüz
ResourceIdOnly.
Sonuç biçimi
Tahmin edilen değişiklikler hakkında döndürülen ayrıntı düzeyini kontrol edersiniz. İki seçeneğiniz vardır:
- Fullresourceyükleri -değiştirilecek kaynakların bir listesini ve değiştirilecek özelliklerle ilgili ayrıntıları döndürür
- Resourceıdonly -değiştirilecek kaynak listesini döndürür
Varsayılan değer Fullresourceyükleri' dir.
PowerShell dağıtım komutları için -WhatIfResultFormat parametresini kullanın. Programlı nesne komutlarında ResultFormat parametresini kullanın.
Azure CLı için --result-format parametresini kullanın.
Aşağıdaki sonuçlar iki farklı çıkış biçimini göstermektedir:
Tam kaynak yükleri
Resource and property changes are indicated with these symbols: - Delete + Create ~ Modify The deployment will update the following scope: Scope: /subscriptions/./resourceGroups/ExampleGroup ~ Microsoft.Network/virtualNetworks/vnet-001 [2018-10-01] - tags.Owner: "Team A" ~ properties.addressSpace.addressPrefixes: [ - 0: "10.0.0.0/16" + 0: "10.0.0.0/15" ] ~ properties.subnets: [ - 0: name: "subnet001" properties.addressPrefix: "10.0.0.0/24" ] Resource changes: 1 to modify.Yalnızca kaynak KIMLIĞI
Resource and property changes are indicated with this symbol: ! Deploy The deployment will update the following scope: Scope: /subscriptions/./resourceGroups/ExampleGroup ! Microsoft.Network/virtualNetworks/vnet-001 Resource changes: 1 to deploy.
Durum işlemini çalıştır
Ortamı ayarlama
Nasıl çalıştığını görmek için bazı testler çalıştıralım. İlk olarak, bir sanal ağ oluşturan bir şablon dağıtın. Değişikliklerin durum tarafından nasıl raporlandığı test etmek için bu sanal ağı kullanabilirsiniz.
New-AzResourceGroup `
-Name ExampleGroup `
-Location centralus
New-AzResourceGroupDeployment `
-ResourceGroupName ExampleGroup `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json"
Test değişikliği
Dağıtım tamamlandıktan sonra what-if işlemini test etmeye hazır olursanız. Bu kez sanal ağın değişikliklerini yapmak için bir şablon dağıtın. Özgün etiketlerden biri eksik, alt ağ kaldırılmış ve adres ön eki değiştirilmiş.
New-AzResourceGroupDeployment `
-Whatif `
-ResourceGroupName ExampleGroup `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-after.json"
what-if komutunun çıkışı aşağıdakine benzer olacaktır:

Metin çıkışı şu şekildedir:
Resource and property changes are indicated with these symbols:
- Delete
+ Create
~ Modify
The deployment will update the following scope:
Scope: /subscriptions/./resourceGroups/ExampleGroup
~ Microsoft.Network/virtualNetworks/vnet-001 [2018-10-01]
- tags.Owner: "Team A"
~ properties.addressSpace.addressPrefixes: [
- 0: "10.0.0.0/16"
+ 0: "10.0.0.0/15"
]
~ properties.subnets: [
- 0:
name: "subnet001"
properties.addressPrefix: "10.0.0.0/24"
]
Resource changes: 1 to modify.
Çıkışın üst kısmında, değişikliklerin türünü belirtmek için renklerin tanımlandığına dikkatin.
Çıkışın alt kısmında Owner was deleted (Sahip silindi) etiketi yer almaktadır. Adres ön eki 10.0.0.0/16'dan 10.0.0.0/15'e değiştirildi. subnet001 adlı alt ağ silindi. Bu değişikliklerin dağıtılamay olduğunu unutmayın. Şablonu dağıtırsanız gerçekleşecek değişikliklerin önizlemesini görebilirsiniz.
Silinmiş olarak listelenen özelliklerden bazıları değişmez. Özellikler şablonda yer alan ancak dağıtım sırasında varsayılan değerler olarak otomatik olarak ayarlandığı zaman hatalı bir şekilde silinebilir. Bu sonuç durum yanıtta "gürültü" olarak kabul edilir. Dağıtılan son kaynak, özellikler için ayarlanmış değerlere sahip olacak. What-if işlemi olgunlaştıkça, bu özellikler sonuçtan filtrelenmiş olur.
Program aracılığıyla what-if sonuçlarını değerlendirme
Şimdi komutunu bir değişkene ayarerek what-if sonuçlarını program aracılığıyla değerlendireceğiz.
$results = Get-AzResourceGroupDeploymentWhatIfResult `
-ResourceGroupName ExampleGroup `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-after.json"
Her değişikliğin özetini görebilir.
foreach ($change in $results.Changes)
{
$change.Delta
}
Silme işlemini onaylama
What-if işlemi, dağıtım modunun kullanmayı destekler. Tamamlama moduna ayarlandıktan sonra şablonda yer alan kaynaklar silinir. Aşağıdaki örnek, tam modda tanımlanmış kaynağı olan bir şablon dağıtır.
Şablonu dağıtmadan önce gerçekleştirilecek değişiklikleri önizlemek için dağıtım komutuyla birlikte confirm anahtarı parametresini kullanın. Değişiklikler beklendiği gibi olursa, dağıtımın tamamlandıktan sonra yanıt verin.
New-AzResourceGroupDeployment `
-ResourceGroupName ExampleGroup `
-Mode Complete `
-Confirm `
-TemplateUri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/azuredeploy.json"
Şablonda hiçbir kaynak tanımlanmamış ve dağıtım modu tamamlanacak şekilde ayarlandığı için sanal ağ silinir.

Metin çıkışı şu şekildedir:
Resource and property changes are indicated with this symbol:
- Delete
The deployment will update the following scope:
Scope: /subscriptions/./resourceGroups/ExampleGroup
- Microsoft.Network/virtualNetworks/vnet-001
id:
"/subscriptions/./resourceGroups/ExampleGroup/providers/Microsoft.Network/virtualNet
works/vnet-001"
location: "centralus"
name: "vnet-001"
tags.CostCenter: "12345"
tags.Owner: "Team A"
type: "Microsoft.Network/virtualNetworks"
Resource changes: 1 to delete.
Are you sure you want to execute the deployment?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
Beklenen değişiklikleri görebilir ve dağıtımın çalıştırması istediğiniz onaylayabilir.
SDK
Azure SDK'ları aracılığıyla what-if işlemi kullanabilirsiniz.
Python için what-if kullanın.
Java için DeploymentWhatIf Sınıfını kullanın.
.NET için DeploymentWhatIf Sınıfını kullanın.
Sonraki adımlar
- İşlem hattında what-if işlemi kullanmak için bkz. İşlem hattında What-If ile ARM şablonlarını test etmek.
- What-if işlemiyle ilgili yanlış sonuçlar fark ediyorsanız lütfen sorunları 'de rapor https://aka.ms/whatifissues edin.
- Ne Microsoft Learn kapsayan bir modül için bkz. What-ifve ARM şablon testi araç setini kullanarak Azure kaynaklarının değişikliklerini önizleme ve doğrulama.