Förstå distributionssekvensen i Azure Blueprints

Azure Blueprints använder en sekvensordning för att fastställa ordningen på resursskapandet när tilldelningen av en skissdefinition bearbetas. I den här artikeln förklaras följande begrepp:

  • Standardordningen för sekvensering som används
  • Så här anpassar du beställningen
  • Så här bearbetas den anpassade ordern

Det finns variabler i JSON-exemplen som du behöver ersätta med dina egna värden:

  • {YourMG} – Ersätt med namnet på din hanteringsgrupp

Standardordning för sekvensering

Om skissdefinitionen inte innehåller något direktiv för att distribuera artefakter eller om direktivet är null används följande ordning:

  • Rolltilldelningsartefakter på prenumerationsnivå sorterade efter artefaktnamn
  • Principtilldelningsartefakter på prenumerationsnivå sorterade efter artefaktnamn
  • Artefakter Azure Resource Manager (ARM-mallar) på prenumerationsnivå sorterade efter artefaktnamn
  • Resursgruppsartefakter (inklusive underordnade artefakter) sorterade efter platshållarnamn

I varje resursgruppsartefakt används följande sekvensordning för artefakter som ska skapas i den resursgruppen:

  • Resursgruppsartefakter för tilldelning av underordnade roller sorterade efter artefaktnamn
  • Tilldelningsartefakter för underprincip för resursgrupp sorterade efter artefaktnamn
  • Resource group child Azure Resource Manager template (ARM templates) artifacts sorterade efter artefaktnamn

Anteckning

Användning av artifacts() skapar ett implicit beroende på artefakten som refereras till.

Anpassa sekvensordningen

När du skapar stora skissdefinitioner kan det vara nödvändigt att resurser skapas i en viss ordning. Det vanligaste användningsmönstret för det här scenariot är när en skissdefinition innehåller flera ARM-mallar. Azure Blueprints hanterar det här mönstret genom att tillåta att sekvensordningen definieras.

Ordningen åstadkoms genom att definiera en dependsOn egenskap i JSON. Skissdefinitionen för resursgrupper och artefaktobjekt stöder den här egenskapen. dependsOn är en strängmatris med artefaktnamn som den specifika artefakten måste skapas innan den skapas.

Anteckning

När du skapar skissobjekt får varje artefaktresurs sitt namn från filnamnet, om du använder PowerShelleller URL-slutpunkten, om du använder REST API. resourceGroup-referenser i artefakter måste matcha de som definieras i skissdefinitionen.

Exempel – sorterad resursgrupp

Den här exempelskissdefinitionen har en resursgrupp som har definierat en anpassad sekvenseringsordning genom att deklarera ett värde för dependsOn , tillsammans med en standardresursgrupp. I det här fallet bearbetas artefakten med namnet assignPolicyTags före resursgruppen ordered-rg. standard-rg bearbetas enligt standardordningen för sekvensering.

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

Exempel – artefakt med anpassad ordning

Det här exemplet är en principartefakt som är beroende av en ARM-mall. Som standard skapas en principartefakt före ARM-mallen. Med den här ordningen kan principartefakten vänta tills ARM-mallen har skapats.

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

Exempel – mallartefakt på prenumerationsnivå beroende på en resursgrupp

Det här exemplet är för en ARM-mall som distribueras på prenumerationsnivå och som är beroende av en resursgrupp. I standardordningen skapas artefakter på prenumerationsnivå före resursgrupper och underordnade artefakter i dessa resursgrupper. Resursgruppen definieras i skissdefinitionen så här:

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

Mallartefakten på prenumerationsnivå, beroende på resursgruppen wait-for-me, definieras så här:

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

Bearbeta den anpassade sekvensen

Under skapandeprocessen används en topologisk sortering för att skapa beroendegrafen för skissartefakter. Kontrollen ser till att varje beroendenivå mellan resursgrupper och artefakter stöds.

Om ett artefaktberoende deklareras som inte ändrar standardordningen görs ingen ändring. Ett exempel är en resursgrupp som är beroende av en princip på prenumerationsnivå. Ett annat exempel är en underordnad principtilldelning för resursgruppen "standard-rg" som är beroende av resursgruppens underordnade rolltilldelning "standard-rg". I båda fallen dependsOn skulle inte ha ändrat standardordningen för sekvensering och inga ändringar skulle göras.

Nästa steg