ARM şablonları ve Azure Resource Manager REST API ile kaynakları dağıtma

Bu makalede, kaynaklarınızı Azure'a dağıtmak için Azure Resource Manager şablonlarıyla (ARM şablonları) Azure Resource Manager REST API'sinin nasıl kullanılacağı açıklanmaktadır.

Şablonunuzu istek gövdesine ekleyebilir veya bir dosyaya bağlanabilirsiniz. Dosya kullanırken, yerel bir dosya veya URI aracılığıyla kullanılabilen bir dış dosya olabilir. Şablonunuz bir depolama hesabındayken, şablona erişimi kısıtlayabilir ve dağıtım sırasında paylaşılan erişim imzası (SAS) belirteci sağlayabilirsiniz.

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, Azure aboneliğine, yönetim grubuna veya kiracıya hedefleyebilirsiniz. Dağıtımın kapsamına bağlı olarak farklı komutlar kullanırsınız.

Bu makaledeki örneklerde kaynak grubu dağıtımları kullanılır.

REST API ile dağıtma

  1. Kimlik doğrulama belirteçleri de dahil olmak üzere ortak parametreleri ve üst bilgileri ayarlayın.

  2. Mevcut olmayan bir kaynak grubuna dağıtıyorsanız kaynak grubunu oluşturun. Abonelik kimliğinizi, yeni kaynak grubunun adını ve çözümünüz için ihtiyacınız olan konumu belirtin. Daha fazla bilgi için bkz. Kaynak grubu oluşturma.

    PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01
    

    İstek gövdesi şöyle olur:

    {
     "location": "West US",
     "tags": {
       "tagname1": "tagvalue1"
     }
    }
    
  3. Ş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. Durum, şablonu hatalara karşı da doğrular.

  4. Şablon dağıtmak için abonelik kimliğinizi, kaynak grubunun adını, istek URI'sindeki dağıtımın adını belirtin.

    PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
    

    İstek gövdesinde şablon ve parametre dosyanıza bir bağlantı sağlayın. Parametre dosyası hakkında daha fazla bilgi için bkz. Resource Manager parametre dosyası oluşturma.

    değerinin modeArtımlı olarak ayarlandığına dikkat edin. Tam bir dağıtım çalıştırmak için Tamamlandı olarak ayarlayınmode. Şablonunuzda olmayan kaynakları yanlışlıkla silebileceğiniz için tam modu kullanırken dikkatli olun.

    {
     "properties": {
       "templateLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
         "contentVersion": "1.0.0.0"
       },
       "parametersLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
         "contentVersion": "1.0.0.0"
       },
       "mode": "Incremental"
     }
    }
    

    Yanıt içeriğini günlüğe kaydetmek, içerik istemek veya her ikisini birden yapmak istiyorsanız, isteğe ekleyin debugSetting .

    {
     "properties": {
       "templateLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
         "contentVersion": "1.0.0.0"
       },
       "parametersLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
         "contentVersion": "1.0.0.0"
       },
       "mode": "Incremental",
       "debugSetting": {
         "detailLevel": "requestContent, responseContent"
       }
     }
    }
    

    Depolama hesabınızı paylaşılan erişim imzası (SAS) belirteci kullanacak şekilde ayarlayabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası ile erişim temsilcisi atama.

    Bir parametre (parola gibi) için hassas bir değer sağlamanız gerekiyorsa, bu değeri bir anahtar kasasına ekleyin. Önceki örnekte gösterildiği gibi dağıtım sırasında anahtar kasasını alın. Daha fazla bilgi için bkz. Dağıtım sırasında güvenli parametre değeri geçirmek için Azure Key Vault kullanma.

  5. Şablon ve parametreler için dosyalara bağlanmak yerine, bunları istek gövdesine ekleyebilirsiniz. Aşağıdaki örnekte şablon ve parametre satır içi olarak istek gövdesi gösterilmektedir:

    {
       "properties": {
       "mode": "Incremental",
       "template": {
         "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
         "contentVersion": "1.0.0.0",
         "parameters": {
           "storageAccountType": {
             "type": "string",
             "defaultValue": "Standard_LRS",
             "allowedValues": [
               "Standard_LRS",
               "Standard_GRS",
               "Standard_ZRS",
               "Premium_LRS"
             ],
             "metadata": {
               "description": "Storage Account type"
             }
           },
           "location": {
             "type": "string",
             "defaultValue": "[resourceGroup().location]",
             "metadata": {
               "description": "Location for all resources."
             }
           }
         },
         "variables": {
           "storageAccountName": "[format('{0}standardsa', uniquestring(resourceGroup().id))]"
         },
         "resources": [
           {
             "type": "Microsoft.Storage/storageAccounts",
             "apiVersion": "2022-09-01",
             "name": "[variables('storageAccountName')]",
             "location": "[parameters('location')]",
             "sku": {
               "name": "[parameters('storageAccountType')]"
             },
             "kind": "StorageV2",
             "properties": {}
           }
         ],
         "outputs": {
           "storageAccountName": {
             "type": "string",
             "value": "[variables('storageAccountName')]"
           }
         }
       },
       "parameters": {
         "location": {
           "value": "eastus2"
         }
       }
     }
    }
    
  6. Şablon dağıtımının durumunu almak için Dağıtımlar - Al'ı kullanın.

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
    

ARMClient ile dağıtma

ARMClient, Azure Resource Manager API'sini çağırmak için basit bir komut satırı aracıdır. Aracı yüklemek için bkz. ARMClient.

Aboneliklerinizi listelemek için:

armclient GET /subscriptions?api-version=2021-04-01

Kaynak gruplarınızı listelemek için:

armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01

subscription-id değerini Azure abonelik kimliğiniz ile değiştirin<.>

Orta ABD bölgesinde bir kaynak grubu oluşturmak için:

armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01  "{location: 'central us', properties: {}}"

Alternatif olarak, gövdeyi CreateRg.json adlı bir JSON dosyasına yerleştirebilirsiniz:

{
  "location": "Central US",
  "properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'

Daha fazla bilgi için bkz . ARMClient: Azure API için komut satırı aracı.

Dağıtım adı

Dağıtımınıza gibi ExampleDeploymentbir ad verebilirsiniz.

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 giriş geçerli dağıtımla değiştirilir. Dağıtım geçmişinde benzersiz girdileri korumak istiyorsanız, her dağıtıma benzersiz bir ad verin.

Benzersiz bir ad oluşturmak için rastgele bir sayı atayabilirsiniz. Veya bir tarih değeri ekleyin.

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. 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ını dağıtan adlı newStorage bir dağıtım çalıştırırsanız ve aynı zamanda adlı storage2bir depolama hesabını 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 adlı 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 girdiler sağlamak için her dağıtıma benzersiz bir ad verin.

Sonraki adımlar