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.
Bu makalede, kaynaklarınızı Azure'a dağıtmak için Azure Resource Manager şablonlarıyla (ARM şablonları) Azure CLI'nın 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ış.
Azure CLI sürüm 2.2.0'da dağıtım komutları değiştirildi. Bu makaledeki örneklerde Azure CLI sürüm 2.20.0 veya üzeri gerekir.
Bu örneği çalıştırmak için Azure CLI'nın en son sürümünü yükleyin. Başlangıç olarak, Azure ile bağlantı oluşturmak için az login komutunu çalıştırın.
Azure CLI örnekleri bash kabuğu için yazılmıştır. Bu örneği Windows PowerShell veya Komut İstemi'nde çalıştırmak için betiğin öğelerini değiştirmeniz gerekebilir.
Azure CLI yüklü değilse Azure Cloud Shell'i kullanabilirsiniz. Daha fazla bilgi için bkz . Azure Cloud Shell'den ARM şablonları dağıtma.
İ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 CLI ile kaynakları dağıtma.
Önkoşullar
Gerekli izinler
Bicep dosyası veya Azure Resource Manager (ARM) şablonu dağıtmak için, dağıttığınız kaynaklar üzerinde yazma erişimine ve Microsoft.Resources/deployments kaynak türüne ait tüm işlemlere erişim hakkına sahip olmanız gerekir. Örneğin, bir sanal makine dağıtmak için ve Microsoft.Compute/virtualMachines/write izinlerine ihtiyacınız vardırMicrosoft.Resources/deployments/*. What-if işlemi aynı izin gereksinimlerine sahiptir.
Azure CLI sürüm 2.76.0 veya üzeri ve Azure PowerShell sürüm 13.4.0 veya üzeri , ARM'nin bu işlem sırasında Bicep şablonunu nasıl kapsamlı bir şekilde doğruladığını belirlemek için ValidationLevel anahtarını tanıtır. Daha fazla bilgi için bkz Varsayımsal komutlar
Rol ve izinlerin listesi için bkz. Azure yerleşik rolleri.
Dağıtım kapsamı
Azure dağıtım şablonunuzu 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 az deployment group create komutunu kullanın.
az deployment group create --resource-group <resource-group-name> --template-file <path-to-template>Bir aboneliğe dağıtmak için az deployment sub create komutunu kullanın:
az deployment sub create --location <location> --template-file <path-to-template>Abonelik düzeyi dağıtımları hakkında daha fazla bilgi için Abonelik düzeyinde kaynak grupları ve kaynaklar oluşturma bölümüne bakın.
Bir yönetim grubuna dağıtmak için az deployment mg create komutunu kullanın:
az deployment mg create --location <location> --template-file <path-to-template>Yönetim grubu düzeyinde dağıtımlar hakkında daha fazla bilgi için Yönetim grubu düzeyinde kaynak oluşturma bölümüne bakın.
Bir kiracıya dağıtmak için az deployment tenant create komutunu kullanın.
az deployment tenant create --location <location> --template-file <path-to-template>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 şablonu dağıtma
Yerel makinenizden veya harici olarak depolanan bir ARM şablonu 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.
az group create --name ExampleGroup --location "Central US"
Yerel şablon dağıtmak için dağıtım komutundaki parametresini kullanın --template-file . Aşağıdaki örnekte parametre değerinin nasıl ayarlanacağı da gösterilmektedir.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file <path-to-template> \
--parameters storageAccountType=Standard_GRS
parametresinin --template-file değeri bir Bicep dosyası veya .json veya .jsonc dosyası olmalıdır. Dosya .jsonc uzantısı, dosyanın stil açıklamaları içerebileceğini // gösterir. ARM sistemi dosyalarda // açıklamaları kabul eder.json. Dosya uzantısını önemsemez. Açıklamalar ve meta veriler hakkında daha fazla ayrıntı için bkz . ARM şablonlarının yapısını ve söz dizimini anlama.
Azure dağıtım şablonunun tamamlanması birkaç dakika sürebilir. Tamamlandığında, sonucu içeren bir ileti görürsünüz:
"provisioningState": "Succeeded",
Uzak şablonu dağıt
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ğ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'un dışına ç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.
az group create --name ExampleGroup --location "Central US"
Dış şablon kullanmak için template-uri parametresini kullanın.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
--parameters storageAccountType=Standard_GRS
Yukarıdaki örnek, şablon için genel olarak erişilebilen bir URI gerektirir. Bu, şablonunuzun hassas veriler içermemesi gerektiğinden çoğu senaryoda çalışır. 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 saklanan ve göreli yol ile erişilen uzak bağlı şablonları dağıtmak için, SAS belirtecini belirtmek amacıyla query-string kullanın.
az deployment group create \
--name linkedTemplateWithRelativePath \
--resource-group myResourceGroup \
--template-uri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" \
--query-string $sasToken
Daha fazla bilgi için Bağlı şablonlar için göreli yolu kullanma bölümüne bakın.
Azure dağıtım şablonu adı
ARM şablonu dağıtırken Azure dağıtım şablonuna bir ad verebilirsiniz. Bu ad, dağıtımı dağıtım geçmişinden geri getirmenize yardımcı olabilir. Dağıtım için bir ad sağlamazsanız şablon dosyasının adı kullanılır. Örneğin, azuredeploy.json adlı bir şablon dağıtırsanız ve bir dağıtım adı belirtmezseniz, dağıtım azuredeploy adıyla adlandırılır.
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.
deploymentName='ExampleDeployment'$RANDOM
Veya bir tarih değeri ekleyin.
deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")
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. Henüz tamamlanmamış ve aynı ada sahip olan herhangi bir dağıtım, son dağıtım ile yer değiştirir. Örneğin, adlı newStoragebir depolama hesabı dağıtan adlı storage1 bir dağıtım çalıştırırsanız ve aynı zamanda adlı newStoragebir depolama hesabı dağıtan adlı storage2 başka bir dağıtımı çalıştırırsanız, yalnızca bir depolama hesabı dağıtırsınız. Elde edilen depolama hesabı, storage2 olarak adlandırılır.
Ancak adlı newStorage bir depolama hesabı storage1dağıtan adlı bir dağıtım çalıştırırsanız ve tamamlandıktan hemen sonra adlı newStoragebir depolama hesabı dağıtan adlı storage2 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ı storage1bir 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 storage2ve 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.
Şablon belirtimini kullanıma al
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 belirtimine 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österilmektedir.
İlk olarak, ARM şablonunu sağlayarak şablon belirtimini oluşturun.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "./mainTemplate.json"
Ardından, şablon belirtiminin kimliğini alın ve dağıtımını gerçekleştirin.
id = $(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
az deployment group create \
--resource-group demoRG \
--template-spec $id
Daha fazla bilgi için bkz . Azure Resource Manager şablonu belirtimleri.
Değişiklikleri önizle
ARM şablonunuzu dağıtmadan önce, şablonun ortamınızda yaptığı değişikliklerin önizlemesini görebilirsiniz. Şablonun beklediğiniz değişiklikleri yaptığını doğrulamak için durum işlemini kullanın. What-if analizi, şablonu hatalara karşı da doğrular.
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 parameters içerisine değerleri sağlayın. Örneğin, bash kabuğundaki bir şablona dize ve dizi geçirmek için şunu kullanın:
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString='inline string' exampleArray='("value1", "value2")'
Azure CLI'yı Windows Komut İstemi (CMD) veya PowerShell ile kullanıyorsanız diziyi şu biçimde geçirin: exampleArray="['value1','value2']".
Ayrıca dosyanın içeriğini alabilir ve bu içeriği satır içi parametre olarak sağlayabilirsiniz.
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json
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.
arrayContent.json biçimi:
[
"value1",
"value2"
]
Örneğin, bir nesneyi geçirmek için, etiketleri ayarlamak için JSON kullanın. Örneğin, şablonunuz şuna benzer bir parametre içerebilir:
"resourceTags": {
"type": "object",
"defaultValue": {
"Cost Center": "IT Department"
}
}
Bu durumda, aşağıdaki Bash betiğinde gösterildiği gibi parametresini ayarlamak için bir JSON dizesi geçirebilirsiniz:
tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $templateFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"
Nesneye geçirmek istediğiniz JSON çevresinde çift tırnak işareti kullanın.
Parametre değerlerini içeren bir değişken kullanabilirsiniz. Bash'te değişkeni tüm parametre değerlerine ayarlayın ve dağıtım komutuna ekleyin.
params="prefix=start suffix=end"
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters $params
Ancak Azure CLI'yı Windows Komut İstemi (CMD) veya PowerShell ile kullanıyorsanız değişkeni bir JSON dizesi olarak ayarlayın. Tırnak işaretlerinden kaçış: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'.
JSON parametre dosyaları
Parametreleri betiğinizde satır içi değerler olarak geçirmek yerine, parametre değerlerini içeren bir .bicepparam dosyası veya bir JSON parametre dosyası kullanmayı daha kolay bulabilirsiniz. Parametre dosyası yerel bir dosya olmalıdır. Dış parametre dosyaları Azure CLI ile desteklenmez.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters 'storage.parameters.json'
Parametre dosyası hakkında daha fazla bilgi için bkz. Resource Manager parametre dosyası oluşturma.
Bicep parametre dosyaları
Azure CLI sürüm 2.53.0 veya üzeri ve Bicep CLI sürüm 0.22.6 veya üzeri ile bir Bicep parametre dosyası kullanarak Bicep dosyası dağıtabilirsiniz.
using Bicep parametre dosyasındaki deyimi kullanıldığında, --template-file anahtarı için bir Bicep parametre dosyası belirtirken --parameters anahtarını sağlamanıza gerek kalmaz. Anahtar --template-file dahil edildiğinde, ".bicepparam dosyasıyla yalnızca bir .bicep dosyasına izin verilir" hatası oluşur.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--parameters storage.bicepparam
Parametre dosyası yerel bir dosya olmalıdır. Dış parametre dosyaları Azure CLI ile desteklenmez. Parametre dosyası hakkında daha fazla bilgi için bkz Resource Manager parametre dosyası oluşturma.
Açıklamalar ve genişletilmiş JSON biçimi
Parametre dosyanıza stil açıklamaları ekleyebilirsiniz // , ancak dosyayı bir .jsonc uzantıyla adlandırmanız gerekir.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters '@storage.parameters.jsonc'
Açıklamalar ve meta veriler hakkında daha fazla ayrıntı için bkz . ARM şablonlarının yapısını ve söz dizimini anlama.
Azure CLI'yı 2.3.0 veya daha eski bir sürümle kullanıyorsanız, anahtarı kullanarak --handle-extended-json-format çok satırlı dizeler veya açıklamalar içeren bir şablon dağıtabilirsiniz. Örneğin:
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2025-04-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[
parameters('location')
]", //defaults to resource group location
/*
storage account and network interface
must be deployed first
*/
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
Sonraki adımlar
- Hata aldığınızda, başarılı bir dağıtıma geri almak için Hata durumunda başarılı dağıtıma geri alma bölümüne bakın.
- Kaynak grubunda var olan ancak şablonda tanımlanmayan kaynakların nasıl işleneceğini belirtmek için bkz . Azure Resource Manager dağıtım modları.
- Şablonunuzda parametreleri tanımlamayı anlamak için bkz . ARM şablonlarının yapısını ve söz dizimini anlama.
- Yaygın dağıtım hatalarını çözmeyle ilgili ipuçları için bkz. Azure Resource Manager ile yaygın Azure dağıtım hatalarını giderme.