Azure ブループリントでのデプロイ シーケンスについて

Azure Blueprints では、ブループリント定義の割り当てを処理するときに、シーケンス順序を使用してリソースの作成順序を決定します。 この記事では、次の概念について説明します。

  • 使用される既定のシーケンス順序
  • 順序をカスタマイズする方法
  • カスタマイズされた順序を処理する方法

JSON の例では、次の変数を独自の値で置き換える必要があります。

  • {YourMG} - 実際の管理グループの名前に置き換えます

既定のシーケンス順序

ブループリント定義に成果物をデプロイする順序を指定するディレクティブが含まれていない場合、またはそのディレクティブが null の場合は、次の順序が使用されます。

  • サブスクリプション レベルのロールの割り当て成果物が、成果物の名前で並べ替えられます
  • サブスクリプション レベルのポリシーの割り当て成果物が、成果物の名前で並べ替えられます
  • サブスクリプション レベルの Azure Resource Manager テンプレート (ARM テンプレート) 成果物が、成果物の名前で並べ替えられます
  • リソース グループ成果物 (子成果物を含む) が、プレースホルダーの名前で並べ替えられます

リソース グループ内では、そのリソース グループ内に作成される成果物に対して次のようなシーケンス順序が適用されます。

  • リソース グループの子のロールの割り当て成果物が、成果物の名前で並べ替えられます
  • リソース グループの子のポリシー割り当て成果物が、成果物の名前で並べ替えられます
  • リソース グループの子の Azure Resource Manager テンプレート (ARM テンプレート) 成果物が、成果物の名前で並べ替えられます

注意

artifacts() の使用により、参照される成果物の暗黙的な依存関係が作成されます。

シーケンス順序のカスタマイズ

大規模なブループリント定義を作成するときは、リソースを特定の順序で作成することが必要になる場合があります。 このシナリオの最も一般的な使用パターンは、ブループリント定義にいくつかの ARM テンプレートが含まれている場合です。 Azure Blueprints では、シーケンス順序を定義できるようにすることによって、このパターンを処理します。

この順序は、JSON 内で dependsOn プロパティを定義することで実現します。 このプロパティは、リソース グループ用のブループリント定義、および成果物オブジェクトによってサポートされています。 dependsOn は、特定の成果物が作成される前に作成する必要がある成果物の名前で構成される文字列配列です。

注意

ブループリント オブジェクトが作成されるとき、各成果物のリソースは、PowerShell を使用している場合は、ファイル名から名前を取得し、REST API を使用している場合は、URL エンドポイントから取得します。 成果物内の 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"
}

カスタマイズされたシーケンスの処理

作成プロセスでは、トポロジカル ソートを使用して、ブループリント成果物の依存関係グラフが作成されます。 この確認により、リソース グループと成果物の各レベルの依存関係がサポートされます。

成果物の依存関係が既定の順序を変更しないと宣言されている場合、変更は加えられません。 たとえば、サブスクリプション レベルのポリシーに依存するリソース グループです。 もう 1 つの例は、リソース グループ 'standard rg' 子ロールの割り当てに依存しているリソース グループ ' standard rg' 子ポリシーの割り当てです。 どちらの場合も、dependsOn によって既定のシーケンス順序が変更されることはなく、何の変更も加えられません。

次のステップ