ARM şablonları ve Azure CLı ile kaynak dağıtma

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

Azure CLı sürüm 2.2.0 'de dağıtım komutları değişmiştir. Bu makaledeki örneklerde Azure CLI sürüm 2.20.0 veya üzerigerekir.

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

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.

Yerel şablonu dağıtma

Yerel makinenizden veya dışarıdan depolanan bir şablonu dağıtabilirsiniz. Bu bölümde yerel bir şablon dağıtımı açıklanmaktadır.

Mevcut olmayan bir kaynak grubuna dağıtıyorsanız, kaynak grubunu oluşturun. Kaynak grubunun adı yalnızca alfasayısal karakterler, noktalar, alt çizgiler, kısa çizgiler ve parantezler içerebilir. En fazla 90 karakter olabilir. Ad bir noktayla bitemez.

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

Yerel bir şablon dağıtmak için --template-file dağıtım komutundaki parametresini kullanın. Aşağıdaki örnekte ayrıca bir parametre değerinin nasıl ayarlanacağı gösterilmektedir.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file <path-to-template> \
  --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 ş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

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, noktalar, alt çizgiler, kısa çizgiler ve parantezler 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

Önceki örnekte, şablon için genel olarak erişilebilir bir URI gerekir ve bu, şablonunuz önemli verileri içermemelidir. Gizli veriler (yönetici parolası gibi) belirtmeniz gerekiyorsa, bu değeri güvenli bir parametre olarak geçirin. Bununla birlikte, şablona erişimi yönetmek istiyorsanız, şablonözelliklerini kullanmayı göz önünde bulundurun.

Bir depolama hesabında depolanan göreli yol ile uzak bağlantılı şablonlar dağıtmak için, query-string SAS belirtecini 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ğlantılı şablonlar için göreli yol kullanma.

Dağıtım adı

ARM şablonunu dağıttığınızda dağıtıma bir ad verebilirsiniz. Bu ad dağıtım geçmişinden dağıtım 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, üzerindeazuredeploy.js adlı bir şablon dağıtırsanız ve dağıtım adı belirtmezseniz, dağıtım 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ı ile bir giriş eklenir. Başka bir dağıtım çalıştırırsanız ve aynı adı verirseniz, önceki girdi geçerli dağıtımla değiştirilmiştir. Dağıtım geçmişinde benzersiz girişleri sürdürmek 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ı 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 tamamlanmıştır. Tamamlanmayan aynı ada sahip dağıtımlar son dağıtımla değiştirilmiştir. Örneğin, adlı bir depolama hesabı dağıtan adlı bir dağıtım çalıştırırsanız newStorage storage1 ve aynı zamanda adlı bir depolama hesabı dağıtan adlı bir dağıtımı çalıştırırsanız newStorage storage2 , yalnızca bir depolama hesabı dağıtırsınız. Elde edilen depolama hesabının adı storage2 .

Ancak, adlı bir depolama hesabı dağıtan adlı bir dağıtımı çalıştırırsanız newStorage storage1 ve bu işlemi tamamladıktan hemen sonra adlı bir depolama hesabı dağıtan adlı başka bir dağıtım çalıştırırsanız newStorage storage2 , iki depolama hesabınız olur. Biri olarak adlandırılır storage1 ve diğeri olarak adlandırılır 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ırsanız newStorage1 storage1 ve aynı zamanda adında bir depolama hesabı dağıtan adlı başka bir dağıtımı çalıştırırsanız newStorage2 storage2 , dağıtım geçmişinde iki depolama hesabınız ve iki giriş vardır.

Eşzamanlı dağıtımlar ile çakışmalardan kaçınmak ve dağıtım geçmişinde benzersiz girişler sağlamak için her dağıtıma benzersiz bir ad verin.

Şablon belirtimini dağıt

Yerel veya uzak şablon dağıtmak yerine, bir şablon belirtimioluşturabilirsiniz. Şablon belirtimi, Azure aboneliğinizdeki bir 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 sağlamak için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanırsınız. Bu özellik şu anda önizleme aşamasındadır.

Aşağıdaki örneklerde, bir ş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ı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 şablonu özellikleri.

Değişiklikleri Önizle

Şablonunuzu dağıtmadan önce, şablonun ortamınızda yapacağız değişiklikleri önizleyebilirsiniz. Şablonun beklediğiniz değişiklikleri yaptığını doğrulamak için ne yapılır işlemini kullanın. Ayrıca, şablonu hatalara yönelik olarak doğrular.

Parametreler

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

Satır içi parametreler

Satır içi parametreleri geçirmek için içindeki değerleri sağlayın parameters . Örneğin, bir bash kabuğundan bir dizeye 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")'

Windows komut istemi (CMD) veya PowerShell ile Azure clı 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 bir 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 alma, yapılandırma değerleri sağlamanız gerektiğinde faydalıdır. Örneğin, bir Linux sanal makinesi için Cloud-init değerlerisağlayabilirsiniz.

Biçimdeki arrayContent.js :

[
    "value1",
    "value2"
]

Bir nesneyi geçirmek için örneğin, etiketleri ayarlamak için JSON kullanın. Örneğin, şablonunuz buna benzer bir parametre içerebilir:

    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Cost Center": "IT Department"
      }
    }

Bu durumda, parametreyi aşağıdaki Bash betiğiyle gösterildiği gibi ayarlamak için bir JSON dizesini 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"

Nesnesine geçirmek istediğiniz JSON etrafında çift tırnak işareti kullanın.

Parametre değerlerini içeren bir değişkeni kullanabilirsiniz. Bash içinde, değişkeni parametre değerlerinin tümü olarak 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, Windows komut istemi (CMD) veya PowerShell ile Azure clı kullanıyorsanız, değişkeni bir JSON dizesine ayarlayın. Tırnak işaretlerini kaçış: $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 CLı ile desteklenmez.

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

Yerel parametre dosyasını geçmek için, üzerinde @storage.parameters.jsadlı 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