Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как использовать REST API Azure Resource Manager с шаблонами Azure Resource Manager (шаблоны ARM) для развертывания ресурсов в Azure.
Вы можете либо включить свой шаблон в тело запроса, либо дать ссылку на файл. При использовании файла это может быть локальный файл или внешний файл, доступный через URI. Если шаблон находится в учетной записи хранения, вы можете ограничить доступ к шаблону и предоставить маркер подписанного URL-адреса (SAS) во время развертывания.
Необходимые разрешения
Для развертывания файла Bicep или шаблона ARM необходим доступ с правом записи к развертываемым ресурсам, а также полный доступ ко всем операциям с типом ресурсов Microsoft.Resources/deployments. Например, для развертывания виртуальной машины необходимы разрешения Microsoft.Compute/virtualMachines/write
и Microsoft.Resources/deployments/*
. Операция what-if имеет те же требования к разрешениям.
Список ролей и разрешений см. в статье Встроенные роли Azure.
Область развертывания
Вы можете нацелить развертывание на группу ресурсов, подписку Azure, группу управления или клиента. В зависимости от области развертывания используются разные команды.
Чтобы выполнить развертывание в группе ресурсов, используйте команду Развертывания — создание. Запрос направляется по адресу:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Чтобы развернуть подписку, используйтекоманду Развертывания — создать в области подписки. Запрос направляется по адресу:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Дополнительные сведения о развертываниях на уровне подписки см. в статье Создание групп ресурсов и ресурсов на уровне подписки.
Чтобы выполнить развертывание в группе управления, используйте команду Развертывания — создать в области группы управления. Запрос направляется по адресу:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Дополнительные сведения о развертываниях на уровне групп управления см. в статье Создание ресурсов на уровне группы управления.
Чтобы выполнить развертывание в клиенте, используйте команду Развертывания — создание или обновление в области клиента. Запрос направляется по адресу:
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Дополнительные сведения о развертываниях на уровне клиента см. в статье Создание ресурсов на уровне клиента.
В примерах в этой статье используются развертывания групп ресурсов.
Развертывание с помощью REST API
Задайте общие параметры и заголовки, в том числе токены аутентификации.
Если развертывание выполняется в несуществующей группе ресурсов, создайте группу ресурсов. Укажите идентификатор подписки, имя новой группы ресурсов и расположение, необходимое для вашего решения. Дополнительную информацию см. в разделе Создание группы ресурсов.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01
С помощью тела запроса вида:
{ "location": "West US", "tags": { "tagname1": "tagvalue1" } }
Перед развертыванием шаблона можно предварительно просмотреть изменения, которые шаблон внесет в вашу среду. Используйте операцию what-if, чтобы убедиться, что шаблон вносит ожидаемые вами изменения. Операция what-if также служит для проверки шаблона на наличие ошибок.
Чтобы развернуть шаблон, укажите идентификатор подписки, имя группы ресурсов и имя развертывания в универсальном коде ресурса ресурса (URI) запроса.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
В тексте запроса укажите ссылку на файл шаблона и параметра. Дополнительные сведения о файле параметров см. в статье Создание файла параметров Resource Manager.
Обратите внимание, что для этого параметра
mode
задано значение Incremental. Чтобы запустить полное развертывание, установитеmode
значение Завершено. Будьте осторожны при использовании полного режима, так как вы можете случайно удалить ресурсы, которых нет в шаблоне.{ "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
его в запрос.{ "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" } } }
Вы можете настроить учетную запись хранения для использования маркера подписанного URL-адреса (SAS). Дополнительные сведения см. в статье Делегирование доступа с помощью подписанного URL-адреса.
Если вам нужно указать конфиденциальное значение для параметра (например, пароля), добавьте это значение в хранилище ключей. Извлеките хранилище ключей во время развертывания, как показано в предыдущем примере. Дополнительные сведения см. в статье "Использование Azure Key Vault для передачи значения безопасного параметра во время развертывания".
Вместо привязки к файлам шаблона и параметров вы можете включить их в тело запроса. В следующем примере показано тело запроса со встроенным шаблоном и параметром:
{ "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" } } } }
Чтобы получить статус развертывания шаблона, используйте команду Развертывания - Получить.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Развертывание с помощью ARMClient
ARMClient — это простое средство командной строки для вызова API Azure Resource Manager. Сведения об установке средства см. в разделе ARMClient.
Чтобы получить список подписок, выполните следующие действия.
armclient GET /subscriptions?api-version=2021-04-01
Чтобы получить список групп ресурсов, выполните следующие действия.
armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01
Замените <subscription-id> на идентификатор подписки Azure.
Чтобы создать группу ресурсов в регионе "Центральная часть США ", выполните следующие действия.
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 "{location: 'central us', properties: {}}"
В качестве альтернативы вы можете поместить тело в файл JSON с именем CreateRg.json:
{
"location": "Central US",
"properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'
Дополнительные сведения см. в статье ARMClient: средство командной строки для Azure API.
Deployment name (Имя развертывания)
Развертыванию можно присвоить имя, например ExampleDeployment
.
Каждый раз при выполнении развертывания в журнал развертываний группы ресурсов добавляется запись с именем развертывания. Если запустить другое развертывание и присвоить ему такое же имя, то предыдущая запись будет заменена текущим развертыванием. Если требуется создать уникальные записи в журнале развертывания, присвойте каждому развертыванию уникальное имя.
Чтобы создать уникальное имя, можно добавить к нему случайное число. Также можно добавить дату.
При выполнении параллельных развертываний в одной группе ресурсов с тем же именем развертывания завершается только последнее развертывание. Все развертывания с идентичным названием, которые не были завершены, будут заменены последним развертыванием. Например, если вы запускаете развертывание с именем newStorage
, которое развертывает учетную запись хранения с именем storage1
и в то же время запускает другое развертывание с именем newStorage
, которое развертывает учетную запись хранения с именем storage2
, развертывается только одна учетная запись хранения. Созданная учетная запись хранения получает имя storage2
.
Однако если вы запустите развертывание с именем newStorage
, которое развертывает учетную запись хранения с именем storage1
, и сразу после завершения работы запустите другое развертывание с именем newStorage
, которое развертывает учетную запись хранения с именем storage2
, то будут созданы две учетные записи хранения. Одна получит имя storage1
, а другая — storage2
. Но в журнал развертывания будет внесена только одна запись.
Если для каждого развертывания указано уникальное имя, их можно запускать параллельно без возникновения конфликтов. Например, если вы запустите развертывание с именем newStorage1
, которое развертывает учетную запись хранения с именем storage1
, и в то же время запустите другое развертывание с именем newStorage2
, которое развертывает учетную запись хранения с именем storage2
, будут созданы две учетные записи хранения и две записи в журнале развертывания.
Чтобы избежать конфликтов между параллельными развертываниями и обеспечить уникальность записей в журнале развертывания, присваивайте каждому развертыванию уникальное имя.
Дальнейшие шаги
- Чтобы вернуться к успешно выполненному развертыванию при возникновении ошибки, см. Откат к успешному развертыванию в случае ошибки.
- Сведения о том, как указать способ обработки ресурсов, которые существуют в группе ресурсов, но не определены в шаблоне, см. в описании режимов развертывания с помощью Azure Resource Manager.
- Дополнительные сведения об обработке асинхронных операций REST см. в статье Отслеживание асинхронных операций Azure.
- Дополнительные сведения о шаблонах см. в статье "Общие сведения о структуре и синтаксисе шаблонов ARM".