ARM şablonları ve Kaynak Yöneticisi REST API ile kaynakları dağıtmaDeploy resources with ARM templates and Resource Manager REST API

Bu makalede, kaynaklarınızı Azure'a dağıtmak için Azure Kaynak Yöneticisi (ARM) şablonlarıyla Kaynak Yöneticisi REST API'sinin nasıl kullanılacağı açıklanmaktadır.This article explains how to use the Resource Manager REST API with Azure Resource Manager (ARM) templates to deploy your resources to Azure.

Şablonunuzu istek gövdesine veya bir dosyaya bağlantıya ekleyebilirsiniz.You can either include your template in the request body or link to a file. Bir dosya kullanırken, yerel bir dosya veya URI üzerinden kullanılabilen harici bir dosya olabilir.When using a file, it can be a local file or an external file that is available through a URI. Şablonunuzun bir depolama hesabında olması durumunda, şablona erişimi kısıtlayabilir ve dağıtım sırasında paylaşılan bir erişim imzası (SAS) belirteci sağlayabilirsiniz.When your template is in a storage account, you can restrict access to the template and provide a shared access signature (SAS) token during deployment.

Dağıtım kapsamıDeployment scope

Dağıtımınızı bir yönetim grubuna, bir Azure aboneliğine veya kaynak grubuna hedefleyebilirsiniz.You can target your deployment to a management group, an Azure subscription, or a resource group. Çoğu durumda, bir kaynak grubuna dağıtımları hedeflersiniz.In most cases, you'll target deployments to a resource group. Belirtilen kapsamda ilkeleri ve rol atamaları uygulamak için yönetim grubunu veya abonelik dağıtımlarını kullanın.Use management group or subscription deployments to apply policies and role assignments across the specified scope. Ayrıca, bir kaynak grubu oluşturmak ve kaynakları ona dağıtmak için abonelik dağıtımlarını da kullanırsınız.You also use subscription deployments to create a resource group and deploy resources to it. Dağıtımın kapsamına bağlı olarak, farklı komutlar kullanırsınız.Depending on the scope of the deployment, you use different commands.

Bir kaynak grubunadağıtmak için, Dağıtımlar' ı kullanın - Oluştur .To deploy to a resource group, use Deployments - Create. İstek aşağıdakilere gönderilir:The request is sent to:

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

Bir aboneyedağıtmak için Dağıtımlar 'ı kullanın - Abonelik Kapsamında Oluştur .To deploy to a subscription, use Deployments - Create At Subscription Scope. İstek aşağıdakilere gönderilir:The request is sent to:

PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2019-05-01

Abonelik düzeyi dağıtımları hakkında daha fazla bilgi için bkz.For more information about subscription level deployments, see Create resource groups and resources at the subscription level.

Bir yönetim grubunadağıtmak için, Dağıtımları kullanın - Yönetim Grubu Kapsamı'nda Oluştur.To deploy to a management group, use Deployments - Create At Management Group Scope. İstek aşağıdakilere gönderilir:The request is sent to:

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2019-05-01

Yönetim grubu düzeyindeki dağıtımlar hakkında daha fazla bilgi için bkz.For more information about management group level deployments, see Create resources at the management group level.

Bu makaledeki örneklerkaynak grubu dağıtımlarını kullanır.The examples in this article use resource group deployments.

REST API ile dağıtmaDeploy with the REST API

  1. Kimlik doğrulama belirteçleri de dahil olmak üzere ortak parametreleri ve üstbilgiayarlayın.Set common parameters and headers, including authentication tokens.

  2. Varolan bir kaynak grubunuz yoksa, bir kaynak grubu oluşturun.If you don't have an existing resource group, create a resource group. Abonelik kimliğinizi, yeni kaynak grubunun adını ve çözümünüz için ihtiyacınız olan konumu sağlayın.Provide your subscription ID, the name of the new resource group, and location that you need for your solution. Daha fazla bilgi için bkz.For more information, see Create a resource group.

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

    Gibi bir istek gövdesi ile:With a request body like:

    {
     "location": "West US",
     "tags": {
       "tagname1": "tagvalue1"
     }
    }
    
  3. Bir şablon dağıtımını doğrula işlemini çalıştırarak dağıtımınızı gerçekleştirmeden önce doğrulayın.Validate your deployment before executing it by running the Validate a template deployment operation. Dağıtımı sınarken, dağıtımı yürürken tam olarak yaptığınız parametreleri sağlayın (bir sonraki adımda gösterilir).When testing the deployment, provide parameters exactly as you would when executing the deployment (shown in the next step).

  4. Bir şablon dağıtmak için abonelik kimliğinizi, kaynak grubunun adını, istek URI'sinde dağıtımın adını sağlayın.To deploy a template, provide your subscription ID, the name of the resource group, the name of the deployment in the request URI.

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

    İstek gövdesinde, şablon ve parametre dosyanıza bir bağlantı sağlayın.In the request body, provide a link to your template and parameter file. Parametre dosyası hakkında daha fazla bilgi için kaynak yöneticisi parametre dosyası oluştur'abakın.For more information about the parameter file, see Create Resource Manager parameter file.

    Modun Artımlı olarak ayarlıolduğuna dikkat edin.Notice the mode is set to Incremental. Tam bir dağıtım çalıştırmak için modu Tamamla'yaayarlayın.To run a complete deployment, set mode to Complete. Şablonunuzda olmayan kaynakları yanlışlıkla silebileceğiniz için tam modu kullanırken dikkatli olun.Be careful when using the complete mode as you can inadvertently delete resources that aren't in your template.

    {
     "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 istiyorsanız, istek içeriği isteyin veya her ikisi de isteğe hata ayıklama ekleyin.If you want to log response content, request content, or both, include debugSetting in the request.

    {
     "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.You can set up your storage account to use a shared access signature (SAS) token. Daha fazla bilgi için bkz.For more information, see Delegating Access with a Shared Access Signature.

    Bir parametre (parola gibi) için hassas bir değer sağlamanız gerekiyorsa, bu değeri bir anahtar kasasına ekleyin.If you need to provide a sensitive value for a parameter (such as a password), add that value to a key vault. Önceki örnekte gösterildiği gibi dağıtım sırasında anahtar kasasını alın.Retrieve the key vault during deployment as shown in the previous example. Daha fazla bilgi için dağıtım sırasında güvenli değerleri geçir'ebakın.For more information, see Pass secure values during deployment.

  5. Şablon ve parametreler için dosyalara bağlanmak yerine, bunları istek gövdesine ekleyebilirsiniz.Instead of linking to files for the template and parameters, you can include them in the request body. Aşağıdaki örnek, şablon ve parametre satırlı istek gövdesini gösterir:The following example shows the request body with the template and parameter inline:

    {
       "properties": {
       "mode": "Incremental",
       "template": {
         "$schema": "https://schema.management.azure.com/schemas/2015-01-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": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
         },
         "resources": [
           {
             "type": "Microsoft.Storage/storageAccounts",
             "apiVersion": "2018-02-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 'ı kullanın - Get .To get the status of the template deployment, use Deployments - Get.

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

Sonraki adımlarNext steps