Wdrażanie zasobów przy użyciu szablonów usługi ARM i interfejsu API REST usługi Azure Resource Manager

W tym artykule wyjaśniono, jak używać interfejsu API REST usługi Azure Resource Manager z szablonami usługi Azure Resource Manager (szablonami usługi ARM) do wdrażania zasobów na platformie Azure.

Szablon można dołączyć do treści żądania lub utworzyć link do pliku. W przypadku korzystania z pliku może to być plik lokalny lub plik zewnętrzny dostępny za pośrednictwem identyfikatora URI. Gdy szablon znajduje się na koncie magazynu, możesz ograniczyć dostęp do szablonu i podać token sygnatury dostępu współdzielonego (SAS) podczas wdrażania.

Wymagane uprawnienia

Aby wdrożyć plik Bicep lub szablon usługi ARM, potrzebujesz dostępu do zapisu w zasobach wdrażanych i dostępu do wszystkich operacji w typie zasobu Microsoft.Resources/deployments. Na przykład do wdrożenia maszyny wirtualnej potrzebne Microsoft.Compute/virtualMachines/write są uprawnienia i Microsoft.Resources/deployments/* . Operacja analizy co-jeżeli ma te same wymagania dotyczące uprawnień.

Aby uzyskać listę ról i uprawnień, zobacz Role wbudowane platformy Azure.

Zakres wdrożenia

Wdrożenie można kierować do grupy zasobów, subskrypcji platformy Azure, grupy zarządzania lub dzierżawy. W zależności od zakresu wdrożenia używane są różne polecenia.

W przykładach w tym artykule są używane wdrożenia grup zasobów.

Wdrażanie przy użyciu interfejsu API REST

  1. Ustaw typowe parametry i nagłówki, w tym tokeny uwierzytelniania.

  2. Jeśli wdrażasz w grupie zasobów, która nie istnieje, utwórz grupę zasobów. Podaj identyfikator subskrypcji, nazwę nowej grupy zasobów i lokalizację potrzebną dla rozwiązania. Aby uzyskać więcej informacji, zobacz Tworzenie grupy zasobów.

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

    Z treścią żądania, na przykład:

    {
     "location": "West US",
     "tags": {
       "tagname1": "tagvalue1"
     }
    }
    
  3. Przed wdrożeniem szablonu możesz wyświetlić podgląd zmian w środowisku. Użyj operacji analizy co-jeżeli , aby sprawdzić, czy szablon wprowadza oczekiwane zmiany. Co-jeżeli weryfikuje również szablon pod kątem błędów.

  4. Aby wdrożyć szablon, podaj identyfikator subskrypcji, nazwę grupy zasobów, nazwę wdrożenia w identyfikatorze URI żądania.

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

    W treści żądania podaj link do pliku szablonu i parametrów. Aby uzyskać więcej informacji na temat pliku parametrów, zobacz Tworzenie pliku parametrów usługi Resource Manager.

    Zwróć uwagę, że parametr mode jest ustawiony na wartość Przyrostowe. Aby uruchomić pełne wdrożenie, ustaw wartość modeUkończono. Podczas korzystania z trybu pełnego należy zachować ostrożność, ponieważ przypadkowo można usunąć zasoby, które nie są w szablonie.

    {
     "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"
     }
    }
    

    Jeśli chcesz rejestrować zawartość odpowiedzi, żądać zawartości lub obu tych elementów, dołącz debugSetting do żądania.

    {
     "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"
       }
     }
    }
    

    Możesz skonfigurować konto magazynu do używania tokenu sygnatury dostępu współdzielonego (SAS). Aby uzyskać więcej informacji, zobacz Delegowanie dostępu za pomocą sygnatury dostępu współdzielonego.

    Jeśli musisz podać wartość wrażliwą dla parametru (np. hasło), dodaj wartość do magazynu kluczy. Pobierz magazyn kluczy podczas wdrażania, jak pokazano w poprzednim przykładzie. Aby uzyskać więcej informacji, zobacz Use Azure Key Vault to pass secure parameter value during deployment (Używanie usługi Azure Key Vault do przekazywania bezpiecznej wartości parametru podczas wdrażania).

  5. Zamiast łączyć się z plikami dla szablonu i parametrów, możesz je uwzględnić w treści żądania. Poniższy przykład przedstawia treść żądania z wbudowanym szablonem i parametrem:

    {
       "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. Aby uzyskać stan wdrożenia szablonu, użyj pozycji Wdrożenia — Pobierz.

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

Wdrażanie za pomocą klienta ARMClient

ARMClient to proste narzędzie wiersza polecenia służące do wywoływania interfejsu API usługi Azure Resource Manager. Aby zainstalować narzędzie, zobacz ARMClient.

Aby wyświetlić listę subskrypcji:

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

Aby wyświetlić listę grup zasobów:

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

Zastąp ciąg< subscription-id> identyfikatorem subskrypcji platformy Azure.

Aby utworzyć grupę zasobów w regionie Środkowe stany USA :

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

Alternatywnie możesz umieścić treść w pliku JSON o nazwie CreateRg.json:

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

Aby uzyskać więcej informacji, zobacz ARMClient: narzędzie wiersza polecenia dla interfejsu API platformy Azure.

Nazwa wdrożenia

Możesz nadać wdrożeniu nazwę, taką jak ExampleDeployment.

Za każdym razem, gdy uruchamiasz wdrożenie, wpis jest dodawany do historii wdrożenia grupy zasobów z nazwą wdrożenia. Jeśli uruchomisz inne wdrożenie i nadasz mu taką samą nazwę, wcześniejszy wpis zostanie zastąpiony bieżącym wdrożeniem. Jeśli chcesz zachować unikatowe wpisy w historii wdrażania, nadaj każdemu wdrożeniu unikatową nazwę.

Aby utworzyć unikatową nazwę, można przypisać liczbę losową. Możesz też dodać wartość daty.

Jeśli uruchamiasz wdrożenia współbieżne do tej samej grupy zasobów o tej samej nazwie wdrożenia, zostanie ukończone tylko ostatnie wdrożenie. Wszystkie wdrożenia o tej samej nazwie, które nie zostały zakończone, są zastępowane ostatnim wdrożeniem. Jeśli na przykład uruchomisz wdrożenie o nazwie newStorage , które wdraża konto magazynu o nazwie storage1, a jednocześnie uruchom kolejne wdrożenie o nazwie newStorage , które wdraża konto magazynu o nazwie storage2, wdrażasz tylko jedno konto magazynu. Wynikowe konto magazynu nosi nazwę storage2.

Jeśli jednak uruchomisz wdrożenie o nazwie newStorage , które wdraża konto magazynu o nazwie , a natychmiast po zakończeniu zostanie uruchomione kolejne wdrożenie o nazwie newStorage , które wdraża konto magazynu o nazwie storage1storage2, oznacza to, że masz dwa konta magazynu. Jeden ma nazwę storage1, a drugi ma nazwę storage2. Jednak w historii wdrażania istnieje tylko jeden wpis.

Po określeniu unikatowej nazwy dla każdego wdrożenia można uruchamiać je współbieżnie bez konfliktu. Jeśli uruchomisz wdrożenie o nazwie newStorage1 , które wdraża konto magazynu o nazwie storage1, a jednocześnie uruchom kolejne wdrożenie o nazwie , które wdraża konto magazynu o nazwie newStorage2storage2, wówczas masz dwa konta magazynu i dwa wpisy w historii wdrożenia.

Aby uniknąć konfliktów z wdrożeniami współbieżnymi i zapewnić unikatowe wpisy w historii wdrażania, nadaj każdemu wdrożeniu unikatową nazwę.

Następne kroki