Сведения о последовательности развертывания в Azure Blueprint

Важно!

11 июля 2026 г. blueprints (предварительная версия) будет считаться нерекомендуемой. Перенесите существующие определения и назначения схем в спецификации шаблонов и стеки развертывания. Артефакты схемы необходимо преобразовать в шаблоны JSON ARM или файлы Bicep, используемые для определения стеков развертывания. Чтобы узнать, как создать артефакт в качестве ресурса ARM, см. следующие статьи:

Служба Azure Blueprints использует порядок последовательности, чтобы определить порядок создания ресурсов при обработке определения схемы. В этой статье объясняются следующие концепции:

  • используемый порядок последовательности по умолчанию;
  • настройка порядка;
  • обработка настроенного порядка.

В примерах кода JSON есть переменные, значения которых необходимо заменить на ваши собственные значения:

  • {YourMG} — замените это значение именем своей группы управления.

Порядок последовательности по умолчанию

Если определение схемы не содержит директивы для порядка развертывания артефактов или директива имеет значение NULL, используется следующий порядок:

  • Артефакты назначения ролей уровня подписки сортируются по имени артефакта
  • Артефакты назначения политик уровня подписки сортируются по имени артефакта
  • Артефакты шаблонов Azure Resource Manager (шаблонов ARM) уровня подписки сортируются по имени артефакта.
  • Артефакты группы ресурсов (включая дочерние артефакты) сортируются по имени заполнителя

Для каждого артефакта группы ресурсов при создании артефактов в этой группе ресурсов используется следующий порядок последовательности:

  • Дочерние артефакты назначения ролей группы ресурсов сортируются по имени артефакта
  • Дочерние артефакты назначения политик группы ресурсов сортируются по имени артефакта
  • Дочерние артефакты шаблонов Azure Resource Manager (шаблонов ARM) группы ресурсов сортируются по имени артефакта.

Примечание

Использование artifacts() создает неявную зависимость от артефакта, на который указывает ссылка.

Изменение порядка последовательности

При создании определений крупных схем может потребоваться создавать ресурсы в определенном порядке. В этом сценарии чаще всего определение схемы включает несколько шаблонов ARM. Для поддержки этого в службе Azure Blueprints предусмотрена возможность определить порядок последовательности.

Для определения порядка в коде JSON определяется свойство dependsOn. Это свойство поддерживается определением схемы (для групп ресурсов) и объектами артефактов. dependsOn представляет собой массив строк имен артефактов, которые необходимо создать перед созданием указанного артефакта.

Примечание

При создании объектов схемы каждый ресурс артефакта получает свое имя из имени файла, если используется PowerShell, или из URL-адреса конечной точки, если используется REST API. Ссылки resourceGroup в артефактах должны соответствовать указанным в определении схемы.

Пример — упорядоченная группа ресурсов

Это пример определения схемы с группой ресурсов, в которой определен пользовательский порядок последовательности путем объявления значения dependsOn со стандартной группой ресурсов. В этом случае артефакт assignPolicyTags будет обрабатываться до группы ресурсов ordered-rg. standard-rg будет обрабатываться в соответствии с порядком последовательности по умолчанию.

{
    "properties": {
        "description": "Example blueprint with custom sequencing order",
        "resourceGroups": {
            "ordered-rg": {
                "dependsOn": [
                    "assignPolicyTags"
                ],
                "metadata": {
                    "description": "Resource Group that waits for 'assignPolicyTags' creation"
                }
            },
            "standard-rg": {
                "metadata": {
                    "description": "Resource Group that follows the standard sequence ordering"
                }
            }
        },
        "targetScope": "subscription"
    },
    "type": "Microsoft.Blueprint/blueprints"
}

Пример: артефакт с пользовательским порядком последовательности

Этот пример содержит артефакт политики, который зависит от шаблона ARM. При использовании порядка сортировки по умолчанию артефакт политики был бы создан перед шаблоном ARM. При таком порядке артефакт политики может ожидать, пока будет создан шаблон ARM.

{
    "properties": {
        "displayName": "Assigns an identifying tag",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
        "resourceGroup": "standard-rg",
        "dependsOn": [
            "customTemplate"
        ]
    },
    "kind": "policyAssignment",
    "type": "Microsoft.Blueprint/artifacts"
}

Пример — артефакт шаблона уровня подписки, зависящий от группы ресурсов

В этом примере показан шаблон ARM, развернутый на уровне подписки и зависящий от группы ресурсов. При упорядочивании по умолчанию артефакты уровня подписки создаются перед группами ресурсов и дочерними артефактами в этих группах ресурсов. Группа ресурсов определяется в определении схемы следующим образом:

"resourceGroups": {
    "wait-for-me": {
        "metadata": {
            "description": "Resource Group that is deployed prior to the subscription level template artifact"
        }
    }
}

Артефакт шаблона уровня подписки, зависящий от группы ресурсов wait-for-me, определяется следующим образом:

{
    "properties": {
        "template": {
            ...
        },
        "parameters": {
            ...
        },
        "dependsOn": ["wait-for-me"],
        "displayName": "SubLevelTemplate",
        "description": ""
    },
    "kind": "template",
    "type": "Microsoft.Blueprint/blueprints/artifacts"
}

Обработка пользовательской последовательности

В процессе создания используется топологическая сортировка для создания графа зависимостей схемы и ее артефактов. Выполняется проверка того, что поддерживается каждый уровень зависимостей между группами ресурсов и артефактами.

Если объявляется зависимость артефактов, которая не изменяет порядок последовательности по умолчанию, никакие изменения не вносятся. Например, это относится к группе ресурсов, которая зависит от политики уровня подписки. Другой пример — назначение дочерней политики standart-rg для группы ресурсов, которая зависит от назначения дочерней роли standard-rg для группы ресурсов. В обоих случаях dependsOn не изменяет порядок последовательности по умолчанию, и изменения не производятся.

Дальнейшие действия