Azure CLI ile Azure Resource Manager (ARM) dağıtım şablonlarını kullanma

Bu makalede, kaynaklarınızı Azure'a dağıtmak Azure Resource Manager şablonları (ARM şablonları) ile Azure CLI'nın nasıl kullanımı açıklanmıştır. Azure çözümlerinizi dağıtma ve yönetme kavramlarını biliyorsanı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 2.20.0 veya sonraki bir sürümü gerekir.

Bu örneği çalıştırmak için, Azure CLI'nin en son sürümünü yükler. Başlangıç olarak, Azure ile bağlantı oluşturmak için az login komutunu çalıştırın.

Azure CLı için örnekler, Shell için yazılmıştır bash . Bu örneği Windows PowerShell veya komut Isteminde çalıştırmak için betiğin öğelerini değiştirmeniz gerekebilir.

Azure CLI yüklüyse, Azure CLI'sini Azure Cloud Shell. Daha fazla bilgi için bkz. Arm şablonlarını Azure Cloud Shell.

Dağıtım kapsamı

Azure dağıtım şablonları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.

Yerel şablonu dağıtma

Arm şablonunu yerel makineden veya harici olarak depolanan bir makineden dağıtabilirsiniz. Bu bölümde, yerel bir şablonun dağıtımı açık bir şekilde açık almaktadı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, noktayla bite bir süreyle sona erer.

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

Yerel bir şablon dağıtmak için dağıtım --template-file komutunda parametresini kullanın. Aşağıdaki örnekte parametre değerinin nasıl ayarlandır olduğu da gösterir.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file <path-to-template> \
  --parameters storageAccountType=Standard_GRS

Azure dağıtım şablonunun tamamlanması birkaç dakika sürebilir. Bu tamamlansa, sonucu içeren bir ileti alırsınız:

"provisioningState": "Succeeded",

Uzak şablonu dağıtma

ARM şablonlarını yerel makinenize depolamak yerine dış bir konumda depolamayı tercih edersiniz. Ş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

Bir şablonu dağıtmak veya özel bir GitHub deposunda depolanan bağlantılı bir şablona başvurmak için, MVP blogundakiözel bir çözüme bakın. Özel bir GitHub deposunda bulunan bir şablon dosyasına erişmek için gereken URL 'YI oluşturmak üzere bir Azure işlevini ara sunucu olarak ayarlayabilirsiniz.

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, noktayla bite bir süreyle sona erer.

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 örnekte şablon için genel olarak erişilebilen bir URI gerekir ve bu URI şablonda hassas veriler içermesi gerektirilmaması nedeniyle çoğu senaryoda kullanılabilir. Hassas verileri (yönetici parolası gibi) belirtmeniz gerekirse bu değeri güvenli bir parametre olarak iletirsiniz. Ancak, şablona erişimi yönetmek için şablon özellikleri kullanmayı göz önünde bulundurabilirsiniz.

Bir depolama hesabında depolanan göreli yola sahip uzak bağlantılı şablonları dağıtmak için query-string SAS belirteci belirtmek için 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 bkz. Bağlı şablonlar için göreli yol kullanma.

Azure dağıtım şablonu adı

ARM şablonu dağıtırken Azure dağıtım şablonuna bir ad veebilirsiniz. Bu ad, dağıtımı dağıtım geçmişinden a yardımcı olabilir. Dağıtım için bir ad sağlayamıyorsanız şablon dosyasının adı kullanılır. Örneğin, azuredeploy.json adlı bir şablon dağıtırsanız ve dağıtım adı belirtmezseniz dağıtımın adı azuredeploy olur.

Bir dağıtımı her çalıştırarak kaynak grubunun dağıtım geçmişine dağıtım adıyla bir giriş eklenir. Başka bir dağıtım çalıştırarak aynı adı kullanırsanız, önceki giriş geçerli dağıtımla değiştirilir. Dağıtım geçmişinde benzersiz girdileri korumak için her dağıtıma benzersiz bir ad girin.

Benzersiz bir ad oluşturmak için rastgele bir sayı at rastgele bir sayı atarak.

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ıyorsanız, yalnızca son dağıtım tamamlanır. Aynı adla bitmiş tüm dağıtımlar son dağıtımla değiştirilir. Örneğin, adlı bir depolama hesabı dağıtan adlı bir dağıtım çalıştırıyorsanız ve aynı zamanda adlı bir depolama hesabı dağıtan adlı başka bir dağıtım çalıştırıyorsanız, yalnızca bir depolama newStorage storage1 hesabı newStorage storage2 dağıtırsınız. Sonuçta elde edilen depolama hesabı olarak storage2 adlandırılmıştır.

Ancak adlı bir depolama hesabı dağıtan adlı bir dağıtım çalıştırıyorsanız ve tamamlandıktan hemen sonra adlı bir depolama hesabı dağıtan adlı başka bir dağıtım çalıştırıyorsanız iki depolama newStorage storage1 hesabınız newStorage storage2 olur. Biri , storage1 diğeri ise olarak adlandırılmış. storage2 Ancak dağıtım geçmişinde yalnızca bir girişiniz vardır.

Her dağıtım için benzersiz bir ad belirttiğinizde, bunları çakışma olmadan eşzamanlı olarak çalıştırabilirsiniz. adlı bir depolama hesabı dağıtan adlı bir dağıtım çalıştırıyorsanız ve aynı zamanda adlı bir depolama hesabı dağıtan adlı başka bir dağıtım çalıştırıyorsanız, dağıtım geçmişinde iki depolama hesabınız ve iki newStorage1 storage1 newStorage2 storage2 girdiniz olur.

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

Şablon özellikleri dağıtma

Yerel veya uzak bir şablon dağıtmak yerine bir şablon özellikleri oluşturabilirsiniz. Şablon özellikleri, Azure aboneliğiniz içinde ARM şablonu içeren bir kaynaktır. Şablonun, kuruluşta kullanıcılarla güvenli bir şekilde paylaştır kolaylaştırır. Şablon özelliklerine erişim vermek için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanırsınız. Bu özellik şu anda önizlemededir.

Aşağıdaki örneklerde şablon özellikleri oluşturma ve dağıtma adımları verilmiştir.

İlk olarak ARM şablonunu sağlayarak şablon özellikleri oluşturun.

az ts create \
  --name storageSpec \
  --version "1.0" \
  --resource-group templateSpecRG \
  --location "westus2" \
  --template-file "./mainTemplate.json"

Ardından şablon özellikleri için kimliği al ve dağıtın.

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 özellikleri.

Değişiklikleri önizleme

ARM şablonlarınızı dağıtmadan önce, şablonun ortamınıza yapacakları değişikliklerin önizlemesini görebilirsiniz. Şablonun beklediğiniz değişiklikleri yaptığını doğrulamak için what-if (durum) işlemi kullanın. What-if ayrıca şablonu hatalara karşı doğrular.

Parametreler

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

Satır içi parametreler

Satır içi parametreleri geçmek için içinde değerleri parameters girin. Örneğin, Bir Bash kabuğunda bir şablona dize ve diziyi geçmek için kullanın:

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-template> \
  --parameters exampleString='inline string' exampleArray='("value1", "value2")'

Windows Komut İstemi (CMD) veya PowerShell ile Azure CLI kullanıyorsanız, diziyi şu biçimde geçişin: exampleArray="['value1','value2']" .

Ayrıca dosyanın içeriğini de almak ve bu içeriği satır içi parametre olarak sağlamaktır.

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 gereken zaman yararlı olur. Örneğin, bir Linux sanal makinesi için cloud-init değerleri sebilirsiniz.

arrayContent.json biçimi şöyledir:

[
    "value1",
    "value2"
]

Bir nesneyi (örneğin, etiketleri ayarlamak için) geçmek için JSON kullanın. Örneğin, şablonunuz aşağıdakine 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çsiniz:

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

Nesnesine geçmek istediğiniz JSON'un etrafında çift tırnak 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 JSON dizesi olarak ayarlayın. Tırnak işaretlerini kaçış olarak alın: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }' .

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 olmalıdır. Dış parametre dosyaları Azure CLI ile desteklenmiyor.

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

Yerel parametre dosyasını geçmek için, @ storage.parameters.json adlı yerel bir dosya belirtmek için kullanın.

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

Genişletilmiş JSON biçimini işleme

Azure CLI'yi sürüm 2.3.0 veya daha eski bir sürümle kullanarak çok satırlı dizelere veya açıklamalara sahip bir şablon dağıtmak için anahtarını --handle-extended-json-format kullansanız gerekir. Örnek:

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-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