8

Azure Resource Manager (ARM) テンプレートには、リンクされたテンプレートを使用する機能があります。これらのリンクされたテンプレートは、ARM テンプレートのデプロイ中に作成する追加のリソースを定義できます。

ARM テンプレートは、一部のリソースが他のリソースより先に作成されるようにする依存関係をサポートしています。

マスター テンプレートで作成されたリソースのリンクされたテンプレートで依存関係を指定したいと考えています。リンクされたテンプレートに依存関係を含めると、次のようになります。

"resources": [
    {
        "apiVersion": "2015-08-01",
        "type": "Microsoft.Web/sites/hostNameBindings",
        "name": "[concat(parameters('siteName'),'/', parameters('fqdn'))]",
        "dependsOn": [
            "[concat('Microsoft.Web/sites/', parameters('siteName'))]"
        ],
        "properties": {
            "siteName": "[parameters('siteName')]"
        }
    }
]

dependsOn正しいように見えますが、リソースは で作成されMicrosoft.Web/sites/{siteNameParameter}、ARM テンプレートをデプロイすると、次のエラー メッセージが出力されます。

InvalidTemplate : 展開テンプレートの検証に失敗しました: 'リソース 'Microsoft.Web/sites/blahblahblahblah' はテンプレートで定義されていません。使い方の詳細はhttps://aka.ms/arm-templateをご覧ください。

現在、リンクされたテンプレートの呼び出しを定義するときに、マスターテンプレートでこの依存関係を定義しています。これはもろくて壊れやすいようです。マスター ARM テンプレートで依存関係を定義するよりも良い方法はありますか?

{
    "apiVersion": "2015-01-01",
    "name": "SomeName",
    "type": "Microsoft.Resources/deployments",
    "dependsOn": [
        "[concat('Microsoft.Web/sites/', parameters('siteName'))]"
    ],
    "properties": {
        "mode": "Incremental",
        "templateLink": {
            "uri": "https://tempuri.org/supersecrettemplatepath/azuredeploy.json",
            "contentVersion": "1.0.0.0"
        },
        "parameters":
        {
            "fqdn": {
                "value": "www.tempuri.org"
            },
            "siteName": {
                "value": "[parameters('siteName')]"
            }
        }
    }
}
4

3 に答える 3