Bicep ve Azure CLI ile kaynakları dağıtma

Bu makalede, kaynaklarınızı Azure'a dağıtmak için Bicep dosyalarıyla Azure CLI'nin 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 CLI'ya ve Azure'a bağlı olmanız gerekir:

Azure CLI örnekleri kabuk için bash yazılı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 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 az deployment group create komutunu kullanın:

    az deployment group create --resource-group <resource-group-name> --template-file <path-to-bicep>
    
  • Bir aboneliğe dağıtmak için az deployment sub create komutunu kullanın:

    az deployment sub create --location <location> --template-file <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 az deployment mg create komutunu kullanın:

    az deployment mg create --location <location> --template-file <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.

  • Bir kiracıya dağıtmak için az deployment tenant create komutunu kullanın:

    az deployment tenant create --location <location> --template-file <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 Bicep dosyasını 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.

az group create --name ExampleGroup --location "Central US"

Yerel bicep dosyasını dağıtmak için dağıtım komutundaki anahtarı 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-bicep> \
  --parameters storageAccountType=Standard_GRS

Dağıtımın tamamlanması birkaç dakika sürebilir. Tamamlandığında, sonucu içeren bir ileti görürsünüz:

"provisioningState": "Succeeded",

Uzak Bicep dosyasını dağıtma

Azure CLI şu anda uzak Bicep dosyalarını dağıtmayı desteklemez. Bicep CLI kullanarak Bicep dosyasını bir JSON şablonuna derleyebilir ve ardından JSON dosyasını uzak konuma yükleyebilirsiniz. Daha fazla bilgi için bkz . Uzak ARM JSON şablonlarını dağıtma.

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 içindeki parametersdeğerleri sağlayın. Örneğin, bash kabuğundaki bicep dosyasına bir dize ve dizi geçirmek için şunu kullanın:

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --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. Dosya adının başına ile yazın @.

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --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, Bicep dosyanız ş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 $bicepFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"

Nesneye geçirmek istediğiniz JSON çevresinde çift tırnak işareti kullanın.

Azure CLI'yı Windows Komut İstemi (CMD) veya PowerShell ile kullanıyorsanız, nesneyi aşağıdaki biçimde geçirin:

$tags="{'Owner':'Contoso','Cost Center':'2345-324'}"
az deployment group create --name addstorage  --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags=$tags

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-bicep> \
  --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şaretlerine kaçış: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'.

Parametrelerin değerlendirilmesi sıralı bir sırayı izler; başka bir deyişle, bir değer birden çok kez atanırsa, yalnızca son atanan değer kullanılır. Doğru parametre atamasını sağlamak için başlangıçta parametre dosyanızı sağlamanız ve KEY=VALUE söz dizimini kullanarak belirli parametreleri seçmeli olarak geçersiz kılmanız önerilir. Parametre dosyası sağlarken bu bağımsız değişkeni yalnızca bir bicepparam kez kullanabileceğinizi belirtmek önemlidir.

Bicep parametre dosyaları

Parametreleri betiğinizde satır içi değerler olarak geçirmek yerine, parametre dosyasını( Bicep parametre dosyası veya parametre değerlerini içeren bir JSON parametre dosyası ) kullanmayı daha kolay bulabilirsiniz. Parametre dosyası yerel bir dosya olmalıdır. Dış parametre dosyaları Azure CLI ile desteklenmez. Parametreler dosyası hakkında daha fazla bilgi için bkz . Resource Manager parametre dosyası oluşturma.

Azure CLI sürüm 2.53.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 --parameters bir Bicep parametre dosyası belirtirken anahtarı sağlamanıza --template-file gerek yoktur. Anahtarın dahil olması --template-file ".bicepparam dosyasıyla yalnızca bir .bicep şablonuna izin verilir" hatasına neden olur.

Aşağıdaki örnekte storage.bicepparam adlı bir parametre dosyası gösterilmektedir. Dosya, komutun çalıştırıldığı dizinde yer alır.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

JSON parametre dosyaları

Aşağıdaki örnekte storage.parameters.json adlı bir parametre dosyası gösterilmektedir. Dosya, komutun çalıştırıldığı dizinde yer alır.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.bicep \
  --parameters '@storage.parameters.json'

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

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 CLI, 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 dosyası 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.

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. Aynı ada sahip ve henüz tamamlanmamış tüm dağıtımlar son dağıtımla değiştirilir. Örneğin, adlı storage1bir depolama hesabı 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ı newStorage bir depolama hesabı storage1dağıtan adlı 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. 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.

Sonraki adımlar

  • Dosyanızda parametreleri tanımlamayı anlamak için bkz . Bicep dosyalarının yapısını ve söz dizimini anlama.