Inzicht in de implementatievolgorde in Azure Blueprints

Azure Blueprints gebruikt een sequencing-volgorde om de volgorde van het maken van resources te bepalen bij het verwerken van de toewijzing van een blauwdrukdefinitie. In dit artikel worden de volgende concepten uitgelegd:

  • De standaard sequencing-volgorde die wordt gebruikt
  • De bestelling aanpassen
  • Hoe de aangepaste bestelling wordt verwerkt

De JSON-voorbeelden bevatten variabelen die u moet vervangen door uw eigen waarden:

  • Vervang {YourMG} door de naam van uw beheergroep

Standaard sequencing-volgorde

Als de blauwdrukdefinitie geen -richtlijn bevat voor de volgorde waarin artefacten moeten worden geïmplementeerd of als de -opdracht null is, wordt de volgende volgorde gebruikt:

  • Roltoewijzingsartefacten op abonnementsniveau gesorteerd op artefactnaam
  • Beleidstoewijzingsartefacten op abonnementsniveau gesorteerd op artefactnaam
  • Arm-Azure Resource Manager sjabloonartefacten op abonnementsniveau gesorteerd op artefactnaam
  • Resourcegroepartefacten (inclusief onderliggende artefacten) gesorteerd op de naam van de tijdelijke aanduiding

Binnen elk resourcegroepartefact wordt de volgende volgorde gebruikt om artefacten te maken binnen die resourcegroep:

  • Onderliggende roltoewijzingsartefacten voor resourcegroep gesorteerd op artefactnaam
  • Onderliggende beleidstoewijzingsartefacten voor resourcegroep gesorteerd op artefactnaam
  • Onderliggende resourcegroep-Azure Resource Manager sjabloon (ARM-sjablonen) gesorteerd op artefactnaam

Notitie

Het gebruik van artifacts() maakt een impliciete afhankelijkheid van het artefact waar naar wordt verwezen.

De volgorde van de sequenctie aanpassen

Bij het opstellen van grote blauwdrukdefinities kan het nodig zijn om resources in een specifieke volgorde te maken. Het meest voorkomende gebruikspatroon van dit scenario is wanneer een blauwdrukdefinitie verschillende ARM-sjablonen bevat. Azure Blueprints verwerkt dit patroon door toe te staan dat de volgorde van de sequenctie wordt gedefinieerd.

De volgorde wordt bereikt door een eigenschap in dependsOn de JSON te definiëren. De blauwdrukdefinitie voor resourcegroepen en artefactobjecten ondersteunt deze eigenschap. dependsOn is een tekenreeksreeks met artefactnamen die het specifieke artefact moet worden gemaakt voordat het wordt gemaakt.

Notitie

Bij het maken van blauwdrukobjecten krijgt elke artefactresource de naam van de bestandsnaam, als u PowerShellof het URL-eindpunt gebruikt, als u REST API . ResourceGroup-verwijzingen in artefacten moeten overeenkomen met de verwijzingen die zijn gedefinieerd in de blauwdrukdefinitie.

Voorbeeld: geordende resourcegroep

Deze blauwdrukdefinitie heeft een resourcegroep die een aangepaste volgorde voor sequencering heeft gedefinieerd door een waarde voor te declareren, samen met dependsOn een standaardresourcegroep. In dit geval wordt het artefact met de naam assignPolicyTags verwerkt vóór de resourcegroep ordered-rg. standard-rg wordt verwerkt volgens de standaard sequencing-volgorde.

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

Voorbeeld: artefact met aangepaste volgorde

Dit voorbeeld is een beleidsartefact dat afhankelijk is van een ARM-sjabloon. Standaard wordt er een beleidsartefact gemaakt vóór de ARM-sjabloon. Door deze volgorde kan het beleidsartefact wachten tot de ARM-sjabloon is gemaakt.

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

Voorbeeld: sjabloonartefact op abonnementsniveau, afhankelijk van een resourcegroep

Dit voorbeeld is voor een ARM-sjabloon die is geïmplementeerd op abonnementsniveau om afhankelijk te zijn van een resourcegroep. In de standaard volgorde worden de artefacten op abonnementsniveau gemaakt vóór resourcegroepen en onderliggende artefacten in deze resourcegroepen. De resourcegroep wordt in de blauwdrukdefinitie als de volgende gedefinieerd:

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

Het sjabloonartefact op abonnementsniveau is afhankelijk van de resourcegroep wait-for-me als de volgende gedefinieerd:

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

De aangepaste reeks verwerken

Tijdens het maakproces wordt een topologische sort gebruikt om de afhankelijkheidsgrafiek van de blauwdrukartefacten te maken. De controle zorgt ervoor dat elk afhankelijkheidsniveau tussen resourcegroepen en artefacten wordt ondersteund.

Als een artefactafhankelijkheid wordt gedeclareerd die de standaardorder niet zou wijzigen, wordt er geen wijziging aangebracht. Een voorbeeld is een resourcegroep die afhankelijk is van een beleid op abonnementsniveau. Een ander voorbeeld is de onderliggende beleidstoewijzing standard-rg van de resourcegroep die afhankelijk is van de toewijzing van de onderliggende rol 'standard-rg' van de resourcegroep. In beide gevallen zou de de standaard sequenctie-volgorde niet hebben gewijzigd en zouden er geen dependsOn wijzigingen worden aangebracht.

Volgende stappen