ARM テンプレートの作成

最終公開日 : Oct 24, 2026
このセクションは、ARM テンプレートに精通しているユーザーを対象としています。App Layering Azure Deployments コネクタ用のテンプレート作成に関する詳細情報を提供します。一般的なARMテンプレート作成情報については、Microsoft ドキュメントを参照してください。

入力

すべての展開タイプには、alという名前のオブジェクトである1つのパラメーターが渡されます。このオブジェクトには、inputとcontextの2つのプロパティがあります。inputプロパティは、各展開タイプに固有のオブジェクトであり、そのプロパティは展開タイプによって異なります。contextプロパティは、すべての展開タイプで同じです。これには、App Layeringタスク、項目(レイヤーまたはイメージテンプレート)、および現在の展開に関連付けられたコネクタ構成に関するデータが含まれます。パラメーターオブジェクトの詳細については、Azure Deployments Template Parameterを参照してください。
各テンプレートは、そのパラメーターセクションでalパラメーターを次のように宣言する必要があります。
{
    ...
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    ...
}
テンプレートは追加のパラメーターを宣言できますが、それらのパラメーターにはすべてデフォルト値が必要です。そうしないと、App Layeringはそれらに値を提供しません。これは、パラメーターのデフォルト値セクションでのみ使用できる関数を使用する場合に役立ちます。たとえば、utcNowなどです。

出力

すべてのARMテンプレートは出力を持つことができます。Azure Deploymentsコネクタを使用すると、テンプレート出力を使用して次の展開に情報を渡すことができます。また、一部のデフォルトの動作を上書きするためにも使用できます。
展開の出力は、al テンプレートパラメーターのinputプロパティを使用して次の展開に渡されます。
たとえば、キャッシュディスク展開に次の出力がある場合:
{
    ...
    "outputs": {
        "generation": {
            "type": "string",
            "value": "[variables('generation')]"
        },
        "name": {
            "type": "string",
            "value": "[variables('name')]"
        },
    }
    ...
}
ブートイメージ展開は次の入力を受け取ります。
{
  "input":
  {
    "type": "BootImage",
    "source": {
        "generation": "V2",
        "name": "MyCoolDiskName"
    }
  },
  "context": {
    ...
  }
}
inputオブジェクトのsourceプロパティには、キャッシュディスク展開テンプレートで指定された各出力のプロパティがあることに注意してください。各出力の発生元は、展開のタイプによって異なります。

展開タイプの詳細

各展開タイプには、App Layering操作の動作を変更できる異なる入力と出力のセットがあります。これらの展開固有の詳細は、このセクションで説明されています。
これらの概念をすべて使用する実際の例については、スターターテンプレートを参照してください。

キャッシュディスク

キャッシュディスクのデプロイでは、マネージドディスクリソースを作成する必要があります。ディスクに加えて、オプションで他のリソースを作成することもできます。App Layeringアプライアンスは、SASトークン(アプライアンスによって生成される)を使用してディスクに書き込む権限を持っている必要があります。作成後、App Layeringコンポジティングエンジンを含むブートイメージがディスクにアップロードされます。

キャッシュディスクの要件

  • マネージドディスクリソースを作成する必要があります
  • マネージドディスクのcreateOptionは"Upload"に設定する必要があります
  • マネージドディスクのuploadSizeBytesは、入力で指定されたuploadSize(例: "[parameters('al').input.uploadSize]")に設定する必要があります
  • App Layeringアプライアンスは、SASトークンを使用してマネージドディスクに書き込める必要があります
{
    ...
    "resources": [
        {
            "type": "Microsoft.Compute/disks",
            ...
            "properties": {
                ...
                "creationData": {
                    "createOption": "Upload",
                    "uploadSizeBytes": "[parameters('al').input.uploadSize]"
                }
                ...
            }
        }
    ]
    ...
}

キャッシュディスクの入力

入力オブジェクトには、sizeとuploadSizeプロパティが含まれます。このオブジェクトには、別のデプロイからの出力は含まれません。

キャッシュディスクの出力

デプロイの出力は、指定されている場合はブートイメージデプロイに渡されます。そうでない場合は、マシンデプロイに渡されます。
diskIdという名前の出力を指定して、App Layeringにどのディスクを使用するかを明示的に伝えることができます。diskId出力が指定されていない場合、App Layeringは自動的にそれを追加し、デプロイによって作成された最初のマネージドディスクリソースのIDに設定します。diskIdで指定されたディスクには、App Layeringコンポジティングエンジンのブートイメージがアップロードされます。

ブートイメージ

このデプロイは、キャッシュディスクデプロイによって作成されたマネージドディスクからリソースを作成します。作成されるリソースの種類に関する厳密な要件はありません。ただし、VM作成時にOSディスクのソースとして使用できるリソース(例: コンピューティングギャラリーイメージバージョン)を作成する必要があります。

ブートイメージディスクの要件

  • 入力として渡されたIDを持つディスクと同じ内容でVMのOSディスクを作成するために使用できるリソースを作成する必要があります。
例として、入力 diskId をソースとして使用するコンピューティングギャラリーイメージバージョン:
{
    ...
    "resources": [
        {
            "type": "Microsoft.Compute/galleries/images/versions",
            ...
            "properties": {
                ...
                "storageProfile": {
                    "osDiskImage": {
                        "source": {
                            "id": "[parameters('al').input.source.diskId]"
                        }
                    }
                }
                ...
            }
        }
    ]
    ...
}

ブートイメージ入力

入力オブジェクト には source プロパティが含まれています。source は、指定された各出力のプロパティを持つ キャッシュディスク デプロイメントの出力を表します。作成されるリソースのソースには diskId プロパティを使用します。

ブートイメージ出力

ブートイメージ デプロイメントの出力は、マシン デプロイメントに渡されます。特別な出力や必須の出力はありません。ただし、作成されたリソースからVMを作成するために必要なデータ(リソースIDなど)を含める必要があります。

マシン

マシン デプロイメントは仮想マシンリソースを作成する必要があります。仮想マシンは、コンポジティングマシンのファイアウォールポート内部接続 に従って、App Layeringアプライアンスに到達でき、またその逆も可能なネットワークに接続されている必要があります。
重要:
キャッシュディスク デプロイメントによって作成されたディスクを仮想マシンに接続しないでください。キャッシュディスク は共有リソースであり、読み取り専用と見なされます。ブートイメージ デプロイメントを使用しない場合は、ディスクのコピーを作成して、代わりにそれを接続してください。

マシンの要件

  • 仮想マシンリソースを作成する必要があります
  • 仮想マシンは、App Layeringアプライアンスとの間で通信を許可するネットワークに接続されている必要があります
  • 仮想マシンのOSディスクは、ブートイメージ または キャッシュディスク リソースをソースとして使用して作成する必要があります
  • 仮想マシンのOSディスクサイズは "[parameters('al').input.disk.size]" に設定する必要があります
  • 仮想マシンの userData プロパティは "[parameters('al').input.vm.userData]" に設定する必要があります。
{
    ...
    "resources": [
        {
            "type": "Microsoft.Compute/disks",
            "name": "[variables('diskName')]",
            ...
            "properties": {
                ...
                "creationData": {
                    "createOption": "Copy",
                    "sourceResourceId": "[parameters('al').input.disk.image.diskId]"
                },
                "diskSizeGB": "[parameters('al').input.disk.size]",
                ...
            }
        },
        {
            "type": "Microsoft.Compute/virtualMachines",
            ...
            "dependsOn": [
                "[resourceId('Microsoft.Compute/disks', variables('diskName'))]"
            ],
            ...
            "properties": {
                ...
                "storageProfile": {
                    "osDisk": {
                        ...
                        "createOption": "Attach",
                        "managedDisk": {
                            "id": "[resourceId('Microsoft.Compute/disks', variables('diskName'))]"
                        }
                    },
                    "dataDisks": []
                },
                ...
                "userData": "[parameters('al').input.vm.userData]"
                ...
            }
        }
    ]
    ...
}

マシンの入力

入力オブジェクト には、disk プロパティと vm プロパティが含まれます。
disk.image プロパティには、ブートイメージ展開が指定されている場合、その出力が含まれます。指定されていない場合は、キャッシュディスク展開の出力が含まれます。disk.size プロパティには、ディスクのサイズがGB単位で含まれます。
vm.userData プロパティには、作成された仮想マシンに割り当てる必要があるユーザーデータが含まれます。

マシンの出力

マシン展開の出力は、指定されている場合、レイヤードイメージ展開に渡されます。レイヤードイメージ展開を使用している場合は、レイヤードイメージ展開から参照できるように、VMまたはOSディスクのIDを出力に含める必要があります。
machineId という名前の出力を指定して、App Layering に使用する仮想マシンを明示的に伝えることができます。machineId 出力が指定されていない場合、App Layering は自動的にそれを追加し、展開によって作成された最初の仮想マシンリソースのリソースIDに設定します。
ipAddress という名前の出力を指定して、App Layering にマシンとの通信に使用するIPアドレスを明示的に伝えることができます。ipAddress 出力が指定されていない場合、App Layering は仮想マシンリソースに接続されているプライマリネットワークカードのプライマリプライベートアドレスを使用します。
message という名前の出力を指定して、イメージ公開タスクの最終ステータスと、App Layering UI のレイヤー作成タスクの必要なアクションステータスに追加されるメッセージを提供できます。このメッセージは、レイヤードイメージ展開が指定されていない場合にのみ、イメージ公開タスクの最終ステータスで使用されます。

レイヤードイメージ

レイヤードイメージ展開は、マシン展開によって作成された仮想マシンまたはその他のリソースからリソースを作成します。作成されるリソースのタイプに関する厳密な要件はありません。ただし、Machine Creation Services™ (MCS) などのプロビジョニングサービスへの入力として使用できるリソースを作成します。コンピューティングギャラリーイメージリソースが良い例です。

レイヤードイメージのディスク要件

  • プロビジョニングサービスが仮想マシンを作成するために使用できるリソースを作成します。
例として、以下のコードブロックは、入力 diskId をソースとして使用して、コンピューティングギャラリーイメージバージョンを作成します。これは、Machine デプロイメントに、マシンの OS ディスクの ID に設定された diskId という名前の出力が含まれていることを前提としています。
{
    ...
"resources": [
        {
            "type": "Microsoft.Compute/galleries/images",
            "name": "[format('{0}/{1}', variables('galleryName'), variables('name'))]",
            ...
            "resources": [
                {
                    "type": "versions",
                    ...
                    "dependsOn": [
                        "[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
                    ],
                    ...
                    "properties": {
                        ...
                        "storageProfile": {
                            "osDiskImage": {
                                "source": {
                                    "id": "[parameters('al').input.source.diskId]"
                                }
                            }
                        }
                        ...
                    }
                }
            ]
        }
    ],
    ...
}

レイヤードイメージの入力

入力オブジェクト には、source と diskName のプロパティが含まれています。source は、Machine デプロイメントの出力を表し、指定された各出力のプロパティを持ちます。diskName プロパティは、App Layering イメージテンプレートで指定されたディスクの名前です。

レイヤードイメージの出力

デプロイメントの出力は、他のデプロイメントには渡されません。ただし、App Layering UI でイメージ公開タスクの最終ステータスに追加されるメッセージを提供するために、message という名前の出力を指定できます。