Bicep ve Azure PowerShell ile kaynak dağıtma
Bu makalede, kaynaklarınızı Azure'a dağıtmak için Bicep dosyalarıyla Azure PowerShell'in nasıl kullanılacağı açıklanmaktadır. Azure çözümlerinizi dağıtma ve yönetme kavramlarını bilmiyorsanız bkz . Bicep'e genel bakış.
Önkoşullar
Dağıtmak için bir Bicep dosyası gerekir. Dosya yerel olmalıdır.
Azure PowerShell'e ve Azure'a bağlı olmanız gerekir:
- Yerel bilgisayarınıza Azure PowerShell cmdlet'lerini yükleyin. Bicep dosyalarını dağıtmak için Azure PowerShell sürüm 5.6.0 veya üzeri gerekir. Daha fazla bilgi için bkz. Azure PowerShell kullanmaya başlayın.
- Bicep CLI'yi yükleyin. Azure PowerShell, Bicep CLI'yi otomatik olarak yüklemez. Bunun yerine, Bicep CLI'yı el ile yüklemeniz gerekir.
- Connect-AzAccount kullanarak Azure'a bağlanın. Birden çok Azure aboneliğiniz varsa Set-AzContext komutunu da çalıştırmanız gerekebilir. Daha fazla bilgi için bkz . Birden çok Azure aboneliği kullanma.
PowerShell yüklü değilse Azure Cloud Shell'i kullanabilirsiniz. Daha fazla bilgi için bkz . Azure Cloud Shell'den Bicep dosyalarını dağıtma.
Gerekli izinler
Bicep dosyasını veya ARM şablonunu dağıtmak için dağıttığınız kaynaklara yazma erişimine ve Microsoft.Resources/deployments kaynak türündeki tüm işlemler için erişime sahip olmanız gerekir. Örneğin, bir sanal makine dağıtmak için ve Microsoft.Resources/deployments/*
izinlerine ihtiyacınız vardırMicrosoft.Compute/virtualMachines/write
. What-if işlemi aynı izin gereksinimlerine sahiptir.
Rol ve izinlerin listesi için bkz. Azure yerleşik rolleri.
Dağıtım kapsamı
Dağıtımınızı bir kaynak grubuna, aboneliğe, yönetim grubuna veya kiracıya hedefleyebilirsiniz. Dağıtımın kapsamına bağlı olarak farklı komutlar kullanırsınız.
Bir kaynak grubuna dağıtmak için New-AzResourceGroupDeployment komutunu kullanın:
New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-bicep>
Bir aboneliğe dağıtmak için, cmdlet'in diğer adı
New-AzDeployment
olan New-AzSubscriptionDeployment kullanın:New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-bicep>
Abonelik düzeyi dağıtımları hakkında daha fazla bilgi için bkz . Abonelik düzeyinde kaynak grupları ve kaynaklar oluşturma.
Bir yönetim grubuna dağıtmak için New-AzManagementGroupDeployment komutunu kullanın.
New-AzManagementGroupDeployment -ManagementGroupId <management-group-id> -Location <location> -TemplateFile <path-to-bicep>
Yönetim grubu düzeyinde dağıtımlar hakkında daha fazla bilgi için bkz . Yönetim grubu düzeyinde kaynak oluşturma.
Kiracıya dağıtmak için New-AzTenantDeployment komutunu kullanın.
New-AzTenantDeployment -Location <location> -TemplateFile <path-to-bicep>
Kiracı düzeyi dağıtımları hakkında daha fazla bilgi için bkz . Kiracı düzeyinde kaynak oluşturma.
Her kapsam için şablonu dağıtan kullanıcının kaynak oluşturmak için gerekli izinlere sahip olması gerekir.
Yerel Bicep dosyasını dağıtma
Yerel makinenizden veya harici olarak depolanan bir Bicep dosyasını dağıtabilirsiniz. Bu bölümde yerel bicep dosyasını dağıtma açıklanmaktadır.
Mevcut olmayan bir kaynak grubuna dağıtıyorsanız kaynak grubunu oluşturun. Kaynak grubunun adı yalnızca alfasayısal karakterler, nokta, alt çizgi, kısa çizgi ve parantez içerebilir. En fazla 90 karakter olabilir. Ad bir noktayla bitemez.
New-AzResourceGroup -Name ExampleGroup -Location "Central US"
Yerel bicep dosyasını dağıtmak için dağıtım komutundaki anahtarı kullanın -TemplateFile
.
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile <path-to-bicep>
Dağıtımın tamamlanması birkaç dakika sürebilir.
Uzak Bicep dosyasını dağıtma
Azure PowerShell şu anda uzak Bicep dosyalarını dağıtmayı desteklemez. Bicep dosyasını bir JSON şablonuna derlemek için Bicep CLI'yı kullanın ve ardından JSON dosyasını uzak konuma yükleyin.
Parametreler
Parametre değerlerini geçirmek için satır içi parametreleri veya parametre dosyasını kullanabilirsiniz. Parametre dosyası bir Bicep parametre dosyası veya JSON parametre dosyası olabilir.
Satır içi parametreler
Satır içi parametreleri geçirmek için parametresinin adlarını komutuyla belirtin New-AzResourceGroupDeployment
. Örneğin, bicep dosyasına bir dize ve dizi geçirmek için şunu kullanın:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString "inline string" `
-exampleArray $arrayParam
parametresini, şablonun TemplateParameterObject
parametrelerini içeren bir karma tablo üzerinden geçirmek için kullanabilirsiniz.
$params = @{
exampleString = "inline string"
exampleArray = "value1", "value2"
}
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-TemplateParameterObject $params
Ayrıca dosyanın içeriğini alabilir ve bu içeriği satır içi parametre olarak sağlayabilirsiniz.
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
-exampleArray $arrayParam
Bir dosyadan parametre değeri almak, yapılandırma değerleri sağlamanız gerektiğinde yararlı olur. Örneğin, Linux sanal makinesi için cloud-init değerleri sağlayabilirsiniz.
Bir nesne dizisi geçirmeniz gerekiyorsa, PowerShell'de karma tablolar oluşturun ve bunları bir diziye ekleyin. Dağıtım sırasında bu diziyi parametre olarak geçirin.
$hash1 = @{ Name = "firstSubnet"; AddressPrefix = "10.0.0.0/24"}
$hash2 = @{ Name = "secondSubnet"; AddressPrefix = "10.0.1.0/24"}
$subnetArray = $hash1, $hash2
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleArray $subnetArray
Bicep parametre dosyaları
Parametreleri betiğinizde satır içi değerler olarak geçirmek yerine, parametre değerlerini içeren bir dosya veya JSON parametre dosyası olan parametre dosyasını .bicepparam
kullanmayı daha kolay bulabilirsiniz. Bicep parametre dosyası yerel bir dosya olmalıdır.
Azure PowerShell sürüm 10.4.0 veya üzeri ve Bicep CLI sürüm 0.22.X veya üzeri ile Bicep parametre dosyasını kullanarak bicep dosyası dağıtabilirsiniz. using
Bicep parametre dosyasındaki deyimiyle, anahtar için -TemplateParameterFile
bir Bicep parametre dosyası belirtirken anahtarı sağlamanıza -TemplateFile
gerek yoktur.
Aşağıdaki örnekte storage.bicepparam adlı bir parametre dosyası gösterilmektedir. Dosya, komutun çalıştırıldığı dizinde yer alır.
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateParameterFile storage.bicepparam
Parametreler dosyası hakkında daha fazla bilgi için bkz . Resource Manager parametre dosyası oluşturma.
JSON parametre dosyaları
JSON parametre dosyası yerel bir dosya veya erişilebilir URI'ye sahip bir dış dosya olabilir. Parametreler dosyası hakkında daha fazla bilgi için bkz . Resource Manager parametre dosyası oluşturma.
Yerel parametre dosyası geçirmek için anahtarını bir JSON parametre dosyasıyla kullanın TemplateParameterFile
:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterFile c:\BicepFiles\storage.parameters.json
Dış parametreler dosyasını geçirmek için parametresini TemplateParameterUri
kullanın:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json
TemplateParameterUri
parametresi dosyaları desteklemez.bicepparam
, yalnızca JSON parametre dosyalarını destekler.
Aynı dağıtım işleminde satır içi parametreleri ve konum parametreleri dosyasını kullanabilirsiniz. Daha fazla bilgi için bkz . Parametre önceliği.
Önceki değişiklikler
Bicep dosyanızı dağıtmadan önce, Bicep dosyasının ortamınızda yapacağı değişikliklerin önizlemesini görebilirsiniz. Durum işlemini kullanarak Bicep dosyasının beklediğiniz değişiklikleri yaptığını doğrulayın. Durum, Bicep dosyasını hatalarla ilgili olarak da doğrular.
Şablon belirtimlerini dağıtma
Şu anda Azure PowerShell, Bicep dosyaları sağlayarak şablon belirtimleri oluşturmayı desteklememektedir. Ancak, şablon belirtimini dağıtmak için Microsoft.Resources/templateSpecs kaynağıyla bir Bicep dosyası oluşturabilirsiniz. Şablon oluşturma belirtimi örneği , Bicep dosyasında şablon belirtiminin nasıl oluşturulacağını gösterir. Ayrıca Bicep CLI kullanarak Bicep dosyanızı JSON'a oluşturabilir ve ardından JSON şablonuyla bir şablon belirtimi oluşturabilirsiniz.
Dağıtım adı
Bicep dosyasını dağıtırken dağıtıma bir ad verebilirsiniz. Bu ad, dağıtımı dağıtım geçmişinden almanıza yardımcı olabilir. Dağıtım için bir ad belirtmezseniz, Bicep dosyasının adı kullanılır. Örneğin, adlı main.bicep
bir Bicep dağıtırsanız ve dağıtım adı belirtmezseniz, dağıtım olarak adlandırılır main
.
Bir dağıtımı her çalıştırdığınızda, kaynak grubunun dağıtım geçmişine dağıtım adıyla bir giriş eklenir. Başka bir dağıtım çalıştırır ve aynı adı verirseniz, önceki girdi geçerli dağıtımla değiştirilir. Dağıtım geçmişinde benzersiz girdiler tutmak istiyorsanız, her dağıtıma benzersiz bir ad verin.
Benzersiz bir ad oluşturmak için rastgele bir sayı atayabilirsiniz.
$suffix = Get-Random -Maximum 1000
$deploymentName = "ExampleDeployment" + $suffix
Veya bir tarih değeri ekleyin.
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"
Aynı kaynak grubuna aynı dağıtım adıyla eşzamanlı dağıtımlar çalıştırırsanız, yalnızca son dağıtım tamamlanır. Aynı ada sahip ve henüz tamamlanmamış tüm dağıtımlar son dağıtımla değiştirilir. Örneğin, adlı storage1
bir depolama hesabı dağıtan adlı newStorage
bir dağıtım çalıştırırsanız ve aynı zamanda adlı storage2
bir depolama hesabı dağıtan adlı newStorage
başka bir dağıtımı çalıştırırsanız, yalnızca bir depolama hesabı dağıtırsınız. Sonuçta elde edilen depolama hesabı olarak adlandırılır storage2
.
Ancak adlı newStorage
bir depolama hesabı storage1
dağıtan adlı bir dağıtım çalıştırırsanız ve tamamlandıktan hemen sonra adlı storage2
bir depolama hesabı dağıtan adlı newStorage
başka bir dağıtım çalıştırırsanız iki depolama hesabınız olur. Biri olarak adlandırılır storage1
, diğeri ise olarak adlandırılır storage2
. Ancak dağıtım geçmişinde yalnızca bir girdiniz vardır.
Her dağıtım için benzersiz bir ad belirttiğinizde, bunları çakışma olmadan eşzamanlı olarak çalıştırabilirsiniz. adlı newStorage1
bir depolama hesabı dağıtan ve aynı zamanda adlı storage1
bir depolama hesabı dağıtan başka bir dağıtım newStorage2
çalıştırırsanız, dağıtım geçmişinde iki depolama hesabınız storage2
ve iki girdiniz vardır.
Eşzamanlı dağıtımlarla çakışmaları önlemek ve dağıtım geçmişinde benzersiz girdiler sağlamak için her dağıtıma benzersiz bir ad verin.
Sonraki adımlar
- Dosyanızda parametreleri tanımlamayı anlamak için bkz . Bicep dosyalarının yapısını ve söz dizimini anlama.