Información sobre la secuencia de implementación en Azure BlueprintUnderstand the deployment sequence in Azure Blueprints

Azure Blueprints usa un orden de secuenciación para determinar el orden de creación de recursos al procesar la asignación de una definición de plano técnico.Azure Blueprints uses a sequencing order to determine the order of resource creation when processing the assignment of a blueprint definition. En este artículo se explican los conceptos siguientes:This article explains the following concepts:

  • El orden de secuenciación predeterminado que se usaThe default sequencing order that is used
  • Cómo personalizar el ordenHow to customize the order
  • Cómo se procesa el orden personalizadoHow the customized order is processed

Hay variables en los ejemplos JSON que se deben reemplazar por los suyos propios:There are variables in the JSON examples that you need to replace with your own values:

  • {YourMG}: reemplácelo por el nombre del grupo de administración{YourMG} - Replace with the name of your management group

Orden de secuenciación predeterminadoDefault sequencing order

Si la definición de plano técnico no contiene ninguna directiva para el orden en que se implementarán los artefactos o la directiva es null, se utiliza el orden siguiente:If the blueprint definition contains no directive for the order to deploy artifacts or the directive is null, then the following order is used:

  • Artefactos de asignación de roles de nivel de suscripción ordenados por nombre de artefactoSubscription level role assignment artifacts sorted by artifact name
  • Artefactos de asignación de directiva de nivel de suscripción ordenados por nombre de artefactoSubscription level policy assignment artifacts sorted by artifact name
  • Artefactos de plantilla de Azure Resource Manager de nivel de suscripción ordenados por nombre de artefactoSubscription level Azure Resource Manager template artifacts sorted by artifact name
  • Artefactos de grupo de recursos (incluidos los secundarios) ordenados por nombre de marcador de posiciónResource group artifacts (including child artifacts) sorted by placeholder name

Dentro de cada artefacto de grupo de recursos, se usa el orden de secuencia siguiente para crear los artefactos dentro de ese grupo de recursos:Within each resource group artifact, the following sequence order is used for artifacts to be created within that resource group:

  • Artefactos secundarios de asignación de roles de grupo de recursos ordenados por nombre de artefactoResource group child role assignment artifacts sorted by artifact name
  • Artefactos de asignación de directiva secundarios de grupo de recursos ordenados por nombre de artefactoResource group child policy assignment artifacts sorted by artifact name
  • Artefactos de plantilla de Azure Resource Manager secundarios de grupo de recursos ordenados por nombre de artefactoResource group child Azure Resource Manager template artifacts sorted by artifact name

Nota

El uso de artifacts() crea una dependencia implícita en el artefacto al que se hace referencia.Use of artifacts() creates an implicit dependency on the artifact being referred to.

Personalización del orden de secuenciaciónCustomizing the sequencing order

Cuando crea definiciones de planos técnicos de gran tamaño, puede ser necesario que los recursos se creen en un orden específico.When composing large blueprint definitions, it may be necessary for resources to be created in a specific order. El patrón de uso más común de este escenario se da cuando una definición de plano técnico incluye varias plantillas de Azure Resource Manager.The most common use pattern of this scenario is when a blueprint definition includes several Azure Resource Manager templates. Para que Blueprints controle este patrón, permite definir el orden de secuenciación.Blueprints handles this pattern by allowing the sequencing order to be defined.

La ordenación se logra definiendo una propiedad dependsOn en JSON.The ordering is accomplished by defining a dependsOn property in the JSON. La definición de plano técnico (para grupos de recursos) y los objetos de artefacto admiten esta propiedad.The blueprint definition, for resource groups, and artifact objects support this property. dependsOn es una matriz de cadenas de nombres de artefacto que el artefacto en particular debe crear antes de su propia creación.dependsOn is a string array of artifact names that the particular artifact needs to be created before it's created.

Nota

Al crear objetos de plano técnico, cada recurso de artefacto obtiene su nombre del nombre de archivo, si usa PowerShell, o del punto de conexión de la dirección URL, si usa la API REST.When creating blueprint objects, each artifact resource gets its name from the filename, if using PowerShell, or the URL endpoint, if using REST API. Las referencias resourceGroup de los artefactos deben coincidir con los definidos en la definición de plano técnico.resourceGroup references in artifacts must match those defined in the blueprint definition.

Ejemplo: grupo de recursos ordenadoExample - ordered resource group

Esta definición de plano técnico de ejemplo tiene un grupo de recursos que ha definido un orden personalizado de secuenciación declarando un valor para dependsOn, junto con un grupo de recursos estándar.This example blueprint definition has a resource group that has defined a custom sequencing order by declaring a value for dependsOn, along with a standard resource group. En este caso, el artefacto denominado assignPolicyTags se procesará antes que el grupo de recursos ordered-rg.In this case, the artifact named assignPolicyTags will be processed before the ordered-rg resource group. standard-rg se procesará en el orden de secuenciación predeterminado.standard-rg will be processed per the default sequencing order.

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

Ejemplo de artefacto con orden personalizadoExample - artifact with custom order

Este ejemplo es un artefacto de directiva que depende de una plantilla de Azure Resource Manager.This example is a policy artifact that depends on an Azure Resource Manager template. Con el orden predeterminado, se crearía un artefacto de directiva antes que la plantilla de Azure Resource Manager.By default ordering, a policy artifact would be created before the Azure Resource Manager template. Esta ordenación permite que el artefacto de directiva espere a que se cree la plantilla de Azure Resource Manager.This ordering allows the policy artifact to wait for the Azure Resource Manager template to be created.

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

Ejemplo: artefacto de plantilla en el nivel de la suscripción que depende de un grupo de recursosExample - subscription level template artifact depending on a resource group

Este ejemplo es para una plantilla de Resource Manager implementada en el nivel de suscripción que depende de un grupo de recursos.This example is for a Resource Manager template deployed at the subscription level to depend on a resource group. En el orden predeterminado, los artefactos de nivel de suscripción se crean antes que los grupos de recursos y los artefactos secundarios de esos grupos de recursos.In default ordering, the subscription level artifacts would be created before any resource groups and child artifacts in those resource groups. El grupo de recursos se define en la definición del plano técnico de la siguiente forma:The resource group is defined in the blueprint definition like this:

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

El artefacto de plantilla de nivel de suscripción que depende del grupo de recursos wait-for-me se define de la siguiente forma:The subscription level template artifact depending on the wait-for-me resource group is defined like this:

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

Procesamiento de la secuencia personalizadaProcessing the customized sequence

Durante el proceso de creación, se usa una ordenación topológica para crear el grafo de dependencias de los artefactos del plano técnico.During the creation process, a topological sort is used to create the dependency graph of the blueprints artifacts. La comprobación garantiza que se admita cada nivel de dependencia entre los grupos de recursos y los artefactos.The check makes sure each level of dependency between resource groups and artifacts is supported.

Si se declara una dependencia de artefacto que no alteraría el orden predeterminado, no se realiza ningún cambio.If an artifact dependency is declared that wouldn't alter the default order, then no change is made. Un ejemplo es un grupo de recursos que depende de una directiva de nivel de suscripción.An example is a resource group that depends on a subscription level policy. Otro ejemplo es una asignación de una directiva secundaria "standard-rg" de un grupo de recursos que dependa de la asignación de roles secundarios de un grupo de recursos "standard-rg".Another example is a resource group 'standard-rg' child policy assignment that depends on resource group 'standard-rg' child role assignment. En ambos casos, el dependsOn no habría alterado el orden de secuenciación predeterminado y no se habría realizado ningún cambio.In both cases, the dependsOn wouldn't have altered the default sequencing order and no changes would be made.

Pasos siguientesNext steps