ARM şablonları ve Azure PowerShell ile kaynakları dağıtma

Bu makalede, kaynaklarınızı Azure'a dağıtmak için Azure Resource Manager şablonlarıyla (ARM şablonları) Azure PowerShell nasıl kullanılacağı açıklanmaktadır. Azure çözümlerinizi dağıtma ve yönetme kavramlarını bilmiyorsanız bkz. şablon dağıtımına genel bakış.

İpucu

ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz. Bicep ve Azure PowerShell ile kaynakları dağıtma.

Önkoşullar

Dağıtmak için bir şablona ihtiyacınız vardır. Henüz bir şablonunuz yoksa, Azure Hızlı Başlangıç şablonları deposundan örnek bir şablon indirin ve kaydedin. Bu makalede kullanılan yerel dosya adı C:\MyTemplates\azuredeploy.json şeklindedir.

Azure PowerShell yüklemeniz ve Azure'a bağlanmanız gerekir:

PowerShell yüklü değilse Azure Cloud Shell kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Cloud Shell ARM şablonları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.

Her kapsam için şablonu dağıtan kullanıcının kaynak oluşturmak için gerekli izinlere sahip olması gerekir.

Dağıtım adı

ARM şablonu 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 sağlamazsanız şablon dosyasının adı kullanılır. Örneğin, adlı azuredeploy.json bir şablon dağıtırsanız ve dağıtım adı belirtmezseniz, dağıtım olarak adlandırılır azuredeploy.

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ı dağıtım adına sahip aynı kaynak grubuna eş zamanlı dağıtımlar çalıştırırsanız, yalnızca son dağıtım tamamlanır. Bitmeden aynı ada sahip tüm dağıtımlar son dağıtımla değiştirilir. Örneğin, adlı storage1bir depolama hesabını dağıtan adlı newStorage bir dağıtım çalıştırırsanız ve aynı zamanda adlı storage2bir 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ı bir depolama hesabı storage1dağıtan adlı newStorage bir dağıtım çalıştırırsanız ve tamamlandıktan hemen sonra adlı storage2bir depolama hesabı dağıtan adlı newStorage başka bir dağıtımı çalıştırırsanız iki depolama hesabınız olur. Birinin adı 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ı newStorage1storage1bir depolama hesabı dağıtan adlı bir dağıtım çalıştırırsanız ve aynı zamanda adlı storage2bir depolama hesabı dağıtan adlı newStorage2 başka bir dağıtımı çalıştırırsanız, dağıtım geçmişinde iki depolama hesabınız ve iki girdiniz vardır.

Eşzamanlı dağıtımlarla çakışmaları önlemek ve dağıtım geçmişinde benzersiz girişler olmasını sağlamak için her dağıtıma benzersiz bir ad verin.

Yerel şablonu dağıtma

Yerel makinenizden veya harici olarak depolanan bir şablondan şablon dağıtabilirsiniz. Bu bölümde yerel şablon 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 şablon dağıtmak için dağıtım komutundaki parametresini kullanın -TemplateFile . Aşağıdaki örnekte şablondan gelen parametre değerinin nasıl ayarlanacağı da gösterilmektedir.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateFile <path-to-template>

Dağıtımın tamamlanması birkaç dakika sürebilir.

Uzak şablonu dağıtma

ARM şablonlarını yerel makinenizde depolamak yerine bunları bir dış konumda depolamayı tercih edebilirsiniz. Şablonları bir kaynak denetimi deposunda (GitHub gibi) saklayabilirsiniz. İsterseniz kuruluşunuzda paylaşılan erişim sağlamak için bir Azure depolama hesabı kullanabilirsiniz.

Not

Özel GitHub deposunda depolanan bir şablonu dağıtmak veya bağlantılı bir şablona başvurmak için Özel ve Güvenli Azure Portal Teklifi Oluşturma bölümünde belgelenen özel bir çözüme bakın. GitHub belirtecini Azure Key Vault'dan çeken bir Azure işlevi oluşturabilirsiniz.

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"

Dış şablon kullanmak için -TemplateUri parametresini kullanın.

New-AzResourceGroupDeployment `
  -Name remoteTemplateDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

Yukarıdaki örnek, şablon için genel olarak erişilebilen bir URI gerektirir. Şablonunuzun hassas veriler içermemesi gerektiğinden çoğu senaryo için geçerlidir. Hassas verileri (yönetici parolası gibi) belirtmeniz gerekiyorsa, bu değeri güvenli bir parametre olarak geçirin. Ancak, şablona erişimi yönetmek istiyorsanız şablon belirtimlerini kullanmayı göz önünde bulundurun.

Bir depolama hesabında depolanan göreli yola sahip uzak bağlantılı şablonları dağıtmak için SAS belirtecini belirtmek için kullanın QueryString :

New-AzResourceGroupDeployment `
  -Name linkedTemplateWithRelativePath `
  -ResourceGroupName "myResourceGroup" `
  -TemplateUri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" `
  -QueryString "$sasToken"

Daha fazla bilgi için bkz. Bağlı şablonlar için göreli yol kullanma.

Şablon belirtimlerini dağıtma

Yerel veya uzak şablon dağıtmak yerine bir şablon belirtimi oluşturabilirsiniz. Şablon belirtimi, Azure aboneliğinizde ARM şablonu içeren bir kaynaktır. Şablonu kuruluşunuzdaki kullanıcılarla güvenli bir şekilde paylaşmayı kolaylaştırır. Şablon belirtimlerine erişim vermek için Azure rol tabanlı erişim denetimini (Azure RBAC) kullanırsınız. Bu özellik şu anda önizleme aşamasındadır.

Aşağıdaki örneklerde şablon belirtiminin nasıl oluşturulacağı ve dağıtılacağı gösterilir.

İlk olarak, ARM şablonunu sağlayarak şablon belirtimini oluşturun.

New-AzTemplateSpec `
  -Name storageSpec `
  -Version 1.0 `
  -ResourceGroupName templateSpecsRg `
  -Location westus2 `
  -TemplateJsonFile ./mainTemplate.json

Ardından şablon belirtiminin kimliğini alın ve dağıtın.

$id = (Get-AzTemplateSpec -Name storageSpec -ResourceGroupName templateSpecsRg -Version 1.0).Versions.Id

New-AzResourceGroupDeployment `
  -ResourceGroupName demoRG `
  -TemplateSpecId $id

Daha fazla bilgi için bkz. Azure Resource Manager şablonu özellikleri.

Değişiklikleri önizleme

Şablonunuzu dağıtmadan önce, şablonun ortamınızda yapacağı değişikliklerin önizlemesini görebilirsiniz. What-if işlemini kullanarak şablonun beklediğiniz değişiklikleri yaptığını doğrulayın. What-if, şablonu hatalara karşı da doğrular.

Parametre değerlerini geçirme

Parametre değerlerini geçirmek için satır içi parametreleri veya parametre dosyasını kullanabilirsiniz.

Satır içi parametreler

Satır içi parametreleri geçirmek için parametresinin adlarını komutuyla sağlayın New-AzResourceGroupDeployment . Örneğin, bir dize ve diziyi şablona geçirmek için şunu kullanın:

$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile <path-to-template> `
  -exampleString "inline string" `
  -exampleArray $arrayParam

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-template> `
  -exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
  -exampleArray $arrayParam

Yapılandırma değerleri sağlamanız gerektiğinde bir dosyadan parametre değeri almak 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-template> `
  -exampleArray $subnetArray

Parametre dosyaları

Parametreleri betiğinize satır içi değerler olarak geçirmek yerine parametre değerlerini içeren bir JSON dosyası kullanmak daha kolayınıza gelebilir. Parametre dosyası yerel bir dosya veya erişilebilir URI'ye sahip bir dış dosya olabilir.

Parametre dosyası hakkında daha fazla bilgi için bkz. Resource Manager parametre dosyası oluşturma.

Yerel parametre dosyasını geçirmek için parametresini TemplateParameterFile kullanın:

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile <path-to-template> `
  -TemplateParameterFile c:\MyTemplates\storage.parameters.json

Dış parametre dosyası geçirmek için parametresini TemplateParameterUri kullanın:

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json `
  -TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json

Sonraki adımlar