Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Resource Manager şablonu (ARM şablonu) test araç seti, şablonunuzun önerilen yöntemleri kullanıp kullanmadığını denetler. Şablonunuz önerilen uygulamalarla uyumlu olmadığında, önerilen değişikliklerle birlikte uyarıların listesini döndürür. Test araç setini kullanarak şablon geliştirmedeki yaygın sorunlardan nasıl kaçınabileceğinizi öğrenebilirsiniz. Bu makalede test araç setinin nasıl çalıştırılacağı ve testlerin nasıl ekleneceği veya kaldırılacağı açıklanır. Testleri çalıştırma veya belirli bir testi çalıştırma hakkında daha fazla bilgi için bkz . Test parametreleri.
Araç seti, PowerShell veya CLI'daki bir komuttan çalıştırılabilir bir PowerShell betikleri kümesidir. Bu testler önerilerdir ancak gereksinimler değildir. Hedeflerinize uygun testlere karar verebilir ve çalıştırılacak testleri özelleştirebilirsiniz.
Araç seti dört test kümesi içerir:
- ARM şablonları için test çalışmaları
- Parametre dosyaları için test çalışmaları
- createUiDefinition.jsoniçin test çalışmaları
- Tüm dosyalar için test çalışmaları
Uyarı
Test araç seti yalnızca ARM şablonları için kullanılabilir. Bicep dosyalarını doğrulamak için Bicep linterini kullanın.
Eğitim kaynakları
ARM şablonu test araç seti hakkında daha fazla bilgi edinmek ve uygulamalı yönergeler için bkz. ARM Şablonu Test Araç Seti'ni kullanarak Azure kaynaklarını doğrulama.
Windows’a yükle
PowerShell'iniz yoksa Windows'a PowerShell'i yükleyin.
Test araç seti için en son .zip dosyasını indirin ve ayıklayın.
PowerShell'i başlatın.
Test araç setini ayıkladığınız klasöre gidin. Bu klasörün içinde arm-ttk klasörüne gidin.
Yürütme ilkeniz internetten betikleri engelliyorsa, betik dosyalarının engellemesini kaldırmanız gerekir. arm-ttk klasöründe olduğunuzdan emin olun.
Get-ChildItem *.ps1, *.psd1, *.ps1xml, *.psm1 -Recurse | Unblock-FileModülü içeri aktarın.
Import-Module .\arm-ttk.psd1Testleri çalıştırmak için aşağıdaki komutu kullanın:
Test-AzTemplate -TemplatePath \path\to\template
Linux'ta yükleme
PowerShell'iniz yoksa PowerShell'i Linux'a yükleyin.
Test araç seti için en son .zip dosyasını indirin ve ayıklayın.
PowerShell'i başlatın.
pwshTest araç setini ayıkladığınız klasöre gidin. Bu klasörün içinde arm-ttk klasörüne gidin.
Yürütme ilkeniz internetten betikleri engelliyorsa, betik dosyalarının engellemesini kaldırmanız gerekir. arm-ttk klasöründe olduğunuzdan emin olun.
Get-ChildItem *.ps1, *.psd1, *.ps1xml, *.psm1 -Recurse | Unblock-FileModülü içeri aktarın.
Import-Module ./arm-ttk.psd1Testleri çalıştırmak için aşağıdaki komutu kullanın:
Test-AzTemplate -TemplatePath /path/to/template
MacOS’ta yükleme
PowerShell'iniz yoksa macOS'a PowerShell'i yükleyin.
coreutilsyükleyin:brew install coreutilsTest araç seti için en son .zip dosyasını indirin ve ayıklayın.
PowerShell'i başlatın.
pwshTest araç setini ayıkladığınız klasöre gidin. Bu klasörün içinde arm-ttk klasörüne gidin.
Yürütme ilkeniz internetten betikleri engelliyorsa, betik dosyalarının engellemesini kaldırmanız gerekir. arm-ttk klasöründe olduğunuzdan emin olun.
Get-ChildItem *.ps1, *.psd1, *.ps1xml, *.psm1 -Recurse | Unblock-FileModülü içeri aktarın.
Import-Module ./arm-ttk.psd1Testleri çalıştırmak için aşağıdaki komutu kullanın:
Test-AzTemplate -TemplatePath /path/to/template
Sonuç biçimi
Geçen testler yeşil renkte görüntülenir ve [+] ile gösterilir.
Başarısız olan testler kırmızı renkte görüntülenir ve [-] ile öngörülenir.
Uyarı içeren testler sarı renkte görüntülenir ve [?]başında yer alır.
Metin sonuçları şunlardır:
deploymentTemplate
[+] adminUsername Should Not Be A Literal (6 ms)
[+] apiVersions Should Be Recent In Reference Functions (9 ms)
[-] apiVersions Should Be Recent (6 ms)
Api versions must be the latest or under 2 years old (730 days) - API version 2019-06-01 of
Microsoft.Storage/storageAccounts is 760 days old
Valid Api Versions:
2021-04-01
2021-02-01
2021-01-01
2020-08-01-preview
[+] artifacts parameter (4 ms)
[+] CommandToExecute Must Use ProtectedSettings For Secrets (9 ms)
[+] DependsOn Best Practices (5 ms)
[+] Deployment Resources Must Not Be Debug (6 ms)
[+] DeploymentTemplate Must Not Contain Hardcoded Uri (4 ms)
[?] DeploymentTemplate Schema Is Correct (6 ms)
Template is using schema version '2015-01-01' which has been deprecated and is no longer
maintained.
Test parametreleri
parametresini -TemplatePath sağladığınızda araç seti bu klasörde azuredeploy.json veya maintemplate.jsonadlı bir şablon arar. Önce bu şablonu test eder, ardından klasördeki ve alt klasörlerindeki diğer tüm şablonları test eder. Diğer şablonlar bağlantılı şablonlar olarak test edilir. Yolunuz createUiDefinition.jsonadlı bir dosya içeriyorsa, kullanıcı arabirimi tanımıyla ilgili testler çalıştırır. Testler, klasördeki parametre dosyaları ve tüm JSON dosyaları için de çalıştırılır.
Test-AzTemplate -TemplatePath $TemplateFolder
Bu klasördeki bir dosyayı test etmek için parametresini -File ekleyin. Ancak, klasörün hala azuredeploy.json veya maintemplate.jsonadlı bir ana şablonu olmalıdır.
Test-AzTemplate -TemplatePath $TemplateFolder -File cdn.json
Varsayılan olarak tüm testler çalıştırılır. Çalıştırılacak tek tek testleri belirtmek için parametresini -Test kullanın ve test adını belirtin. Test adları için bkz. ARM şablonları, parametre dosyaları, createUiDefinition.jsonve tüm dosyalar.
Test-AzTemplate -TemplatePath $TemplateFolder -Test "Resources Should Have Location"
Testleri özelleştirme
Varsayılan testleri özelleştirebilir veya kendi testlerinizi oluşturabilirsiniz. Testi kalıcı olarak kaldırmak istiyorsanız .test.ps1 dosyasını klasörden silin.
Araç setinde, belirli dosya türleri için çalıştırılacak varsayılan testleri içeren dört klasör vardır:
- ARM şablonları: \arm-ttk\testcases\deploymentTemplate
- Parametre dosyaları: \arm-ttk\testcases\deploymentParameters
- createUiDefinition.json: \arm-ttk\testcases\CreateUIDefinition
- Tüm dosyalar: \arm-ttk\testcases\AllFiles
Özel test ekleme
Kendi testinizi eklemek için adlandırma kuralına sahip bir dosya oluşturun: Your-Custom-Test-Name.test.ps1.
Test, şablonu nesne parametresi veya dize parametresi olarak alabilir. Genellikle birini veya diğerini kullanırsınız, ancak her ikisini de kullanabilirsiniz.
Şablonun bir bölümünü almanız ve özellikleri üzerinde döngüsel olarak işlem yapmanız gerektiğinde object parametresini kullanın. nesne parametresini kullanan bir test aşağıdaki biçime sahiptir:
param(
[Parameter(Mandatory=$true,Position=0)]
[PSObject]
$TemplateObject
)
# Implement test logic that evaluates parts of the template.
# Output error with: Write-Error -Message
Şablon nesnesi aşağıdaki özelliklere sahiptir:
$schemacontentVersionparametersvariablesresourcesoutputs
Örneğin, ile $TemplateObject.parametersparametre koleksiyonunu alabilirsiniz.
Tüm şablonda dize işlemi yapmanız gerektiğinde dize parametresini kullanın. Dize parametresini kullanan bir test aşağıdaki biçime sahiptir:
param(
[Parameter(Mandatory)]
[string]
$TemplateText
)
# Implement test logic that performs string operations.
# Output error with: Write-Error -Message
Örneğin, belirli bir söz diziminin kullanılıp kullanılmadiğini görmek için dize parametresinin normal bir ifadesini çalıştırabilirsiniz.
Testi uygulama hakkında daha fazla bilgi edinmek için bu klasördeki diğer testlere bakın.
Azure Market şablonlarını doğrulama
Azure Market'te bir teklif yayımlamak için test araç setini kullanarak şablonları doğrulayın. Şablonlarınız doğrulama testlerini geçtiğinde Azure Market teklifinizi daha hızlı onaylar. Testlerde başarısız olursa teklif sertifikasyonda başarısız olur.
Önemli
Market testleri Temmuz 2022'de eklendi. Önceki bir sürümünüz varsa modülünüzü güncelleştirin.
Testleri ortamınızda çalıştırma
Araç setini yükledikten ve modülü içeri aktardıktan sonra paketinizi test etmek için aşağıdaki cmdlet'i çalıştırın:
Test-AzMarketplacePackage -TemplatePath "Path to the unzipped package folder"
Sonuçları yorumlama
Testler sonuçları iki bölümde döndürür. İlk bölümde zorunlu olan testler yer alır. Bu testlerin sonuçları özet bölümünde görüntülenir.
Önemli
Marketplace teklifi kabul edilmeden önce, kırmızıyla işaretlenmiş tüm sonuçları düzeltmeniz gerekir. Sarı renkle dönen tüm sonuçları düzeltmenizi öneririz.
Metin sonuçları şunlardır:
Validating nestedtemplates\AzDashboard.json
[+] adminUsername Should Not Be A Literal (210 ms)
[+] artifacts parameter (3 ms)
[+] CommandToExecute Must Use ProtectedSettings For Secrets (201 ms)
[+] Deployment Resources Must Not Be Debug (160 ms)
[+] DeploymentTemplate Must Not Contain Hardcoded Url (13 ms)
[+] Location Should Not Be Hardcoded (31 ms)
[+] Min and Max Value Are Numbers (4 ms)
[+] Outputs Must Not Contain Secrets (9 ms)
[+] Password params must be secure (3 ms)
[+] Resources Should Have Location (2 ms)
[+] Resources Should Not Be Ambiguous (2 ms)
[+] Secure Params In Nested Deployments (205 ms)
[+] Secure String Parameters Cannot Have Default (3 ms)
[+] URIs Should Be Properly Constructed (190 ms)
[+] Variables Must Be Referenced (9 ms)
[+] Virtual Machines Should Not Be Preview (173 ms)
[+] VM Size Should Be A Parameter (165 ms)
Pass : 99
Fail : 3
Total: 102
Validating StartStopV2mkpl_1.0.09302021\anothertemplate.json
[?] Parameters Must Be Referenced (86 ms)
Unreferenced parameter: resourceGroupName
Unreferenced parameter: location
Unreferenced parameter: azureFunctionAppName
Unreferenced parameter: applicationInsightsName
Unreferenced parameter: applicationInsightsRegion
Özet bölümünün altındaki bölüm, uyarı olarak yorumlanabilir test hatalarını içerir. Hataları düzeltmek isteğe bağlıdır ancak kesinlikle önerilir. Hatalar genellikle müşteri teklifinizi yüklerken hatalara neden olan yaygın sorunlara işaret eder.
Testlerinizi düzeltmek için sizin için geçerli olan test çalışmalarını izleyin:
Teklifi gönderin
Gerekli düzeltmeleri yaptıktan sonra test araç setini yeniden çalıştırın. Teklifinizi Azure Market'e göndermeden önce sıfır hata olduğundan emin olun.
Azure Pipelines ile entegrasyon
Test araç setini Azure Pipeline'ınıza ekleyebilirsiniz. İşlem hattıyla, şablon her güncelleştirildiğinde testi çalıştırabilir veya dağıtım işleminizin bir parçası olarak çalıştırabilirsiniz.
Test araç setini işlem hattınıza eklemenin en kolay yolu üçüncü taraf uzantıları kullanmaktır. Aşağıdaki iki uzantı kullanılabilir:
İsterseniz kendi görevlerinizi de uygulayabilirsiniz. Aşağıdaki örnekte test araç setinin nasıl indirilmesi gösterilmektedir.
Dağıtım İşlem Hattı için:
{
"environment": {},
"enabled": true,
"continueOnError": false,
"alwaysRun": false,
"displayName": "Download TTK",
"timeoutInMinutes": 0,
"condition": "succeeded()",
"task": {
"id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
"versionSpec": "2.*",
"definitionType": "task"
},
"inputs": {
"targetType": "inline",
"filePath": "",
"arguments": "",
"script": "New-Item '$(ttk.folder)' -ItemType Directory\nInvoke-WebRequest -uri '$(ttk.uri)' -OutFile \"$(ttk.folder)/$(ttk.asset.filename)\" -Verbose\nGet-ChildItem '$(ttk.folder)' -Recurse\n\nWrite-Host \"Expanding files...\"\nExpand-Archive -Path '$(ttk.folder)/*.zip' -DestinationPath '$(ttk.folder)' -Verbose\n\nWrite-Host \"Expanded files found:\"\nGet-ChildItem '$(ttk.folder)' -Recurse",
"errorActionPreference": "stop",
"failOnStderr": "false",
"ignoreLASTEXITCODE": "false",
"pwsh": "true",
"workingDirectory": ""
}
}
Boru Hattı YAML tanımı için:
- pwsh: |
New-Item '$(ttk.folder)' -ItemType Directory
Invoke-WebRequest -uri '$(ttk.uri)' -OutFile "$(ttk.folder)/$(ttk.asset.filename)" -Verbose
Get-ChildItem '$(ttk.folder)' -Recurse
Write-Host "Expanding files..."
Expand-Archive -Path '$(ttk.folder)/*.zip' -DestinationPath '$(ttk.folder)' -Verbose
Write-Host "Expanded files found:"
Get-ChildItem '$(ttk.folder)' -Recurse
displayName: 'Download TTK'
Sonraki örnekte testlerin nasıl çalıştırılacakları gösterilmektedir.
Dağıtım İşlem Hattı için:
{
"environment": {},
"enabled": true,
"continueOnError": true,
"alwaysRun": false,
"displayName": "Run Best Practices Tests",
"timeoutInMinutes": 0,
"condition": "succeeded()",
"task": {
"id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
"versionSpec": "2.*",
"definitionType": "task"
},
"inputs": {
"targetType": "inline",
"filePath": "",
"arguments": "",
"script": "Import-Module $(ttk.folder)/arm-ttk/arm-ttk.psd1 -Verbose\n$testOutput = @(Test-AzTemplate -TemplatePath \"$(sample.folder)\")\n$testOutput\n\nif ($testOutput | ? {$_.Errors }) {\n exit 1 \n} else {\n Write-Host \"##vso[task.setvariable variable=result.best.practice]$true\"\n exit 0\n} \n",
"errorActionPreference": "continue",
"failOnStderr": "true",
"ignoreLASTEXITCODE": "false",
"pwsh": "true",
"workingDirectory": ""
}
}
Boru Hattı YAML tanımı için:
- pwsh: |
Import-Module $(ttk.folder)/arm-ttk/arm-ttk.psd1 -Verbose
$testOutput = @(Test-AzTemplate -TemplatePath "$(sample.folder)")
$testOutput
if ($testOutput | ? {$_.Errors }) {
exit 1
} else {
Write-Host "##vso[task.setvariable variable=result.best.practice]$true"
exit 0
}
errorActionPreference: continue
failOnStderr: true
displayName: 'Run Best Practices Tests'
continueOnError: true
Sonraki Adımlar
- Şablon testleri hakkında bilgi edinmek için bkz. ARM şablonları için test çalışmaları.
- Parametre dosyalarını test etmek için bkz . Parametre dosyaları için test çalışmaları.
- createUiDefinition testleri için bkz . createUiDefinition.json için test çalışmaları.
- Tüm dosyalara yönelik testler hakkında bilgi edinmek için bkz . Tüm dosyalar için test çalışmaları.
- Test araç setini kullanmayı kapsayan bir Learn modülü için bkz. ARM Şablonu Test Araç Seti'ni kullanarak Azure kaynaklarını doğrulama.