App Layering

スターターテンプレート

このセクションには、Azure デプロイメントコネクタで使用できる ARM テンプレートがすべて含まれています。これらのテンプレートはそのまま使用することも、特定のニーズに合わせて変更することもできます。

これらのテンプレートによって作成された各リソースには、同じタグセットが付けられます。これらのタグには、タスクを開始したユーザーの名前や入力したコメントなど、デプロイのコンテキストに関する有用な情報が含まれています。

テンプレートは、 コネクタ構成のカスタムデータを多用します。カスタムデータにより、ユーザーはテンプレートを変更することなく、locationvmSizegenerationなどの一般的なパラメーターを定義できます。

次の表は、これらのテンプレートで使用されるすべてのカスタムデータプロパティを示しています。各プロパティに適用するテンプレートと、そのプロパティが必須かどうかを指定します。

R = 必須、O = オプション、-= 未使用

名前 種類 説明 デフォルト キャッシュディスク ブートイメージ マシン レイヤードイメージ
場所 string リソースが作成されるリージョン。 ターゲットリソースグループと同じリージョン。 O O O O
gallery string 画像を作成するコンピュートギャラリーの名前。ギャラリーはターゲットリソースグループに含まれている必要があります。 - - R - R
storageSku string 管理対象ディスクに使用する SKU の名前。 “StandardSSD_LRS” O - O -
generation string 仮想マシンの生成。 “V2” - O O O
trustedLaunch ブーリアン型 trueでトラステッド起動を有効にし、それ以外の場合はfalseです。 これはすべてのデプロイタイプで同じ値である必要があります。 false O O O O
diskAccessId string ディスクコンテンツのアップロード時に使用されるディスクアクセスのリソース ID。これを指定すると、ディスクはパブリックネットワークアクセスを無効にして作成されます。詳細については、 Azure のドキュメントを参照してください null O - - -
vmSize string 作成する VM のサイズ。 “Standard_D2s_v3” - - O -
licenseType string 作成した仮想マシンに適用するオンプレミスのライセンスタイプ。 null - - O -
subnetId string 仮想マシンのネットワークカードを接続するサブネットのリソース ID。 - - - R -
replicaCount number ギャラリーイメージバージョンのリージョンごとのデフォルトのレプリカ数 1 - - - O
targetRegions array ギャラリー画像バージョンのターゲット領域。これは、リージョン名文字列および/または TargetRegion オブジェクトの配列として指定されます。アレイには、ソースディスクの領域 ( location カスタムデータで指定) が含まれている必要があります。 location カスタムデータで指定された地域 - - - O
publishAs 文字列または配列 画像を公開するリソースのタイプ。「galleryImage」または「managedDisk」で構成される配列または文字列として指定されます [“galleryImage”] - - - O

カスタムデータの例:

{
    "gallery": "MyGallery",
    "subnetId": "/subscriptions/ab3d1259-f5a9-407f-bbdd-bfd5701e2e94/resourceGroups/PDGTPB/providers/Microsoft.Network/virtualNetworks/MyVnet/subnets/mysubnet"
}
<!--NeedCopy-->

カスタムデータの別の例:

{
    "location": "eastus",
    "gallery": "MyGallery",
    "storageSku": "Premium_LRS",
    "trustedLaunch": true,
    "diskAccessId": "/subscriptions/ab3d1259-f5a9-407f-bbdd-bfd5701e2e94/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/diskAccesses/MyDiskAccess",
    "vmSize": "Standard_D4s_v3",
    "subnetId": "/subscriptions/ab3d1259-f5a9-407f-bbdd-bfd5701e2e94/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVnet/subnets/mysubnet",
    "replicaCount": 2,
    "targetRegions": [
        "eastus",
        {
            "name": "eastus2",
            "regionalReplicaCount": 5,
            "storageAccountType": "Premium_LRS"
        },
        "westus"
    ]
}
<!--NeedCopy-->

キャッシュディスク

管理ディスクを作成します。

キャッシュディスクのカスタムデータ

名前 種類 説明 デフォルト 必須
location string リソースが作成されるリージョン。 ターゲットリソースグループと同じリージョン いいえ
storageSku string 使用する SKU の名前。 “StandardSSD_LRS” no
trustedLaunch ブーリアン型 trueでトラステッド起動を有効にし、それ以外の場合はfalseです。 これはすべてのデプロイタイプで同じ値である必要があります。 false no
diskAccessId string ディスクの内容をアップロードするときに使用するディスクアクセスのリソース ID。指定した場合、ディスクはパブリックネットワークアクセスを無効にして作成されます。 null no

キャッシュディスクテンプレート

  • 1.1.0.0-トラステッド起動のサポートを追加
  • 1.0.0.0-初期バージョン
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.1.0.0",
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    "variables": {
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "name": "[concat(parameters('al').context.item.name,'-', parameters('al').context.item.id)]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "hasDiskAccess": "[contains(variables('custom'), 'diskAccessId')]",
        "storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]"
    },
    "resources": [
        {
            "type": "Microsoft.Compute/disks",
            "apiVersion": "2021-08-01",
            "name": "[variables('name')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "sku": {
                "name": "[variables('storageSku')]"
            },
            "properties": {
                "creationData": {
                    "createOption": "Upload",
                    "uploadSizeBytes": "[parameters('al').input.uploadSize]"
                },
                "incremental": "false",
                "diskAccessId": "[if(variables('hasDiskAccess'), variables('custom').diskAccessId, null())]",
                "networkAccessPolicy": "[if(variables('hasDiskAccess'), 'AllowPrivate', 'AllowAll')]",
                "publicNetworkAccess": "[if(variables('hasDiskAccess'), 'Disabled', 'Enabled')]",
                "securityProfile": "[if(variables('trustedLaunch'), createObject('securityType', 'TrustedLaunch'), null())]"
            }
        }
    ]
}
<!--NeedCopy-->

ブートイメージ

ブートイメージデプロイでは、カスタムデータで指定されたギャラリーにギャラリーイメージとイメージバージョンが作成されます。作成されたコンピュートギャラリーの画像バージョンの ID を出力して、 マシンテンプレートで使用します

ブートイメージのカスタムデータ

名前 種類 説明 デフォルト 必須
location string リソースが作成されるリージョン。 ターゲットリソースグループと同じリージョン。 no
generation string ディスクで使用される仮想マシンの生成。 “V2” no
trustedLaunch ブーリアン型 trueでトラステッド起動を有効にし、それ以外の場合はfalseです。 これはすべてのデプロイタイプで同じ値である必要があります。 false no
gallery string 画像を作成するコンピュートギャラリーの名前。ギャラリーはターゲットリソースグループに含まれている必要があります。 - はい

ブートイメージテンプレート

  • 1.1.0.0-トラステッド起動のサポートを追加
  • 1.0.0.0-初期バージョン
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.1.0.0",
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    "variables": {
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "name": "[concat(parameters('al').context.item.name, '.', replace(parameters('al').context.config.id, '-', ''), '.', parameters('al').context.item.id)]",
        "version": "[parameters('al').context.item.version.name]",
        "galleryName": "[variables('custom').gallery]",
        "generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]"
    },
    "resources": [
        {
            "type": "Microsoft.Compute/galleries/images",
            "name": "[concat(variables('galleryName'), '/', variables('name'))]",
            "apiVersion": "2021-07-01",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "properties": {
                "description": "[parameters('al').context.item.description]",
                "features": "[if(variables('trustedLaunch'), createArray(createObject('name', 'SecurityType', 'value', 'TrustedLaunch')), null())]",
                "hyperVGeneration": "[variables('generation')]",
                "osType": "Windows",
                "osState": "Specialized",
                "endOfLifeDate": "2030-01-01T00:00:00Z",
                "identifier": {
                    "publisher": "Citrix",
                    "offer": "[parameters('al').context.config.id]",
                    "sku": "[parameters('al').context.item.id]"
                }
            },
            "resources": [
                {
                    "type": "versions",
                    "apiVersion": "2021-07-01",
                    "name": "[variables('version')]",
                    "location": "[variables('location')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
                    ],
                    "tags": "[variables('tags')]",
                    "properties": {
                        "publishingProfile": {
                            "replicaCount": 1,
                            "targetRegions": [
                                {
                                    "name": "[variables('location')]"
                                }
                            ]
                        },
                        "storageProfile": {
                            "osDiskImage": {
                                "source": {
                                    "id": "[parameters('al').input.source.diskId]"
                                }
                            }
                        }
                    }
                }
            ]
        }
    ],
    "outputs": {
        "id": {
            "type": "string",
            "value": "[resourceId('Microsoft.Compute/galleries/images/versions', variables('galleryName'), variables('name'), variables('version'))]"
        }
    }
}
<!--NeedCopy-->

マシン

マシンデプロイでは、仮想マシン、NIC、管理ディスクが作成されます。このテンプレートは、 ブートイメージデプロイメントが指定されていてもなくても機能します

マシンカスタムデータ

名前 種類 説明 デフォルト 必須
location string リソースが作成されるリージョン。 ターゲットリソースグループと同じリージョン。 no
storageSku string 作成されたディスクの SKU の名前。 “StandardSSD_LRS” no
generation string 仮想マシンの世代。 “V2” no
trustedLaunch ブーリアン型 trueでトラステッド起動を有効にし、それ以外の場合はfalseです。 これはすべてのデプロイタイプで同じ値である必要があります。 false no
secureBoot ブーリアン型 trueでセキュアブートを有効にします。それ以外の場合はfalseです。これが適用されるのは、trustedLaunchtrueに設定されている場合だけです 。 true no
vTPM ブーリアン型 trueでvTPM を有効にします。それ以外の場合はfalseです。これが適用されるのは、trustedLaunchtrueに設定されている場合だけです 。 true no
vmSize string 作成する VM のサイズ。 “Standard_D2s_v3” no
licenseType string 仮想マシンに適用するオンプレミスライセンスの種類。 null no
subnetId string NIC を接続するサブネットのリソース ID。 - yes

マシンテンプレート

  • 1.1.0.0-トラステッド起動のサポートを追加
  • 1.0.0.0-初期バージョン
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.1.0.0",
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    "variables": {
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "name": "[concat('al-', parameters('al').context.taskId)]",
        "vmName": "[concat(variables('name'), '-vm')]",
        "nicName": "[concat(variables('name'), '-nic')]",
        "diskName": "[concat(variables('name'), '-disk')]",
        "diskId": "[resourceId('Microsoft.Compute/disks', variables('diskName'))]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "source": "[parameters('al').input.disk.image]",
        "isFromImage": "[not(contains(variables('source'), 'diskId'))]",
        "generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
        "vmSize": "[if(contains(variables('custom'), 'vmSize'), variables('custom').vmSize, 'Standard_D2s_v3')]",
        "storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
        "secureBoot": "[if(contains(variables('custom'), 'secureBoot'), variables('custom').secureBoot, variables('trustedLaunch'))]",
        "vTpm": "[if(contains(variables('custom'), 'vTpm'), variables('custom').vTpm, variables('trustedLaunch'))]",
        "securityProfile": {
            "securityType": "TrustedLaunch",
            "uefiSettings": {
                "secureBootEnabled": "[variables('secureBoot')]",
                "vTpmEnabled": "[variables('vTpm')]"
            }
        }
    },
    "resources": [
        {
            "type": "Microsoft.Network/networkInterfaces",
            "apiVersion": "2020-11-01",
            "name": "[variables('nicName')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "ipconfig1",
                        "properties": {
                            "privateIPAllocationMethod": "Dynamic",
                            "subnet": {
                                "id": "[variables('custom').subnetId]"
                            },
                            "primary": true,
                            "privateIPAddressVersion": "IPv4"
                        }
                    }
                ],
                "dnsSettings": {
                    "dnsServers": []
                },
                "enableAcceleratedNetworking": false,
                "enableIPForwarding": false
            }
        },
        {
            "condition": "[not(variables('isFromImage'))]",
            "type": "Microsoft.Compute/disks",
            "apiVersion": "2021-08-01",
            "name": "[variables('diskName')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "sku": {
                "name": "[variables('storageSku')]"
            },
            "properties": {
                "osType": "Windows",
                "hyperVGeneration": "[variables('generation')]",
                "creationData": {
                    "createOption": "Copy",
                    "sourceResourceId": "[variables('source').diskId]"
                },
                "diskSizeGB": "[parameters('al').input.disk.size]",
                "networkAccessPolicy": "DenyAll",
                "publicNetworkAccess": "Disabled"
            }
        },
        {
            "type": "Microsoft.Compute/virtualMachines",
            "apiVersion": "2021-07-01",
            "name": "[variables('vmName')]",
            "location": "[variables('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]",
                "[variables('diskId')]"
            ],
            "tags": "[variables('tags')]",
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[variables('vmSize')]"
                },
                "securityProfile": "[if(variables('trustedLaunch'), variables('securityProfile'), null())]",
                "storageProfile": {
                    "imageReference": "[if(variables('isFromImage'), createObject('id', variables('source').id), null())]",
                    "osDisk": {
                        "osType": "Windows",
                        "createOption": "[if(variables('isFromImage'), 'FromImage', 'Attach')]",
                        "caching": "ReadWrite",
                        "deleteOption": "Delete",
                        "diskSizeGB": "[parameters('al').input.disk.size]",
                        "managedDisk": "[if(variables('isFromImage'), createObject('storageAccountType', variables('storageSku')), createObject('id', variables('diskId')))]"
                    },
                    "dataDisks": []
                },
                "networkProfile": {
                    "networkInterfaces": [
                        {
                            "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]"
                        }
                    ]
                },
                "diagnosticsProfile": {
                    "bootDiagnostics": {
                        "enabled": true
                    }
                },
                "licenseType": "[if(contains(variables('custom'), 'licenseType'), variables('custom').licenseType, null())]",
                "userData": "[parameters('al').input.vm.userData]"
            }
        }
    ],
    "outputs": {
        "diskId": {
            "type": "string",
            "value": "[reference(variables('vmName')).storageProfile.osDisk.managedDisk.id]"
        },
        "message": {
            "type": "string",
            "value": "[format('See [link="{0}/#@{1}/resource/{2}"]{2}[/link].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/virtualMachines', variables('vmName')))]"
        }
    }
}
<!--NeedCopy-->

レイヤードイメージ

レイヤードイメージデプロイメントでは、ギャラリーイメージバージョンとマネージドディスクの 2 種類のリソースを作成できます。どちらのリソースタイプも、公開されているApp Layering イメージテンプレートの名前とその構築されたバージョン番号を使用して名前が付けられています。バージョン番号は、App Layering イメージテンプレートのディスク名のメジャー番号とマイナー番号を使用して作成されます。ディスク名が数値バージョン (number.number) としてフォーマットされていない場合は、 1.0 がデフォルトで適用されます。パッチ番号は、App Layering イメージテンプレートのバージョン番号 (公開された回数) です。ギャラリー画像には名前が割り当てられ、ギャラリー画像のバージョンにはバージョン番号が割り当てられます。 管理ディスクには、バージョン番号を付加した名前が割り当てられます。

ギャラリーの画像とバージョンは、カスタムデータで指定されたギャラリーに作成されます。画像が複数回公開されると、コンピュートギャラリーの画像に新しいバージョンが追加され、古いバージョンはそのまま残ります。

レイヤードイメージカスタムデータ

R = 必須、O = オプション、-= 未使用

名前 種類 説明 デフォルト ギャラリーイメージ マネージドディスク
publishAs 文字列または配列 作成するリソースのタイプ。「galleryImage」または「managedDisk」で構成される配列または文字列として指定されます [“galleryImage”] O R
location string リソースが作成されるリージョン。 ターゲットリソースグループと同じリージョン O O
generation string イメージがサポートする仮想マシンの生成。 “V2” O O
trustedLaunch ブーリアン型 trueでトラステッド起動を有効にし、それ以外の場合はfalseです。 これはすべてのデプロイタイプで同じ値である必要があります。 false O O
gallery string 画像を作成するコンピュートギャラリーの名前。ギャラリーはターゲットリソースグループに含まれている必要があります。 - R -
replicaCount number ギャラリーイメージバージョンのリージョンごとのデフォルトのレプリカ数 1 O -
targetRegions array ギャラリー画像バージョンのターゲット領域。これは、リージョン名文字列および/または TargetRegion オブジェクトの配列として指定されます。アレイには、ソースディスクの領域 (locationカスタムデータで指定されている領域) が含まれている必要があります。 location カスタムデータで指定された地域 O -
storageSku string 使用する SKU の名前。 “StandardSSD_LRS” - O
diskAccessId string ディスクの内容をアップロードするときに使用するディスクアクセスのリソース ID。指定した場合、ディスクはパブリックネットワークアクセスを無効にして作成されます。 null - O

レイヤードイメージテンプレート

  • 1.1.0.0
    • トラステッド起動のサポートが追加されました
    • ギャラリー画像バージョンのレプリカ数とターゲットリージョンのサポートが追加されました
    • マネージドディスクとして公開するためのサポートが追加されました
  • 1.0.0.0-初期バージョン
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.1.0.0",
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    "variables": {
        "invalidChars": [ " ", "(", ")", "[[", "]", "{", "}", "!", "@", "#", "$", "%", "^", "&", "*", "+", "/", "\", "'", """, "|", "`", "~", "<", ">", ",", "?", "*" ],
        "numericChars": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ],
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "name": "[join(split(parameters('al').context.item.name, variables('invalidChars')), '_')]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "splitVer": "[split(parameters('al').input.diskName, '.')]",
        "major": "[if(equals(0, length(join(split(variables('splitVer')[0], variables('numericChars')), ''))), variables('splitVer')[0], '1')]",
        "minor": "[if(greater(length(variables('splitVer')), 1), if(equals(0, length(join(split(variables('splitVer')[1], variables('numericChars')), ''))), variables('splitVer')[1], '0'), '0')]",
        "version": "[format('{0}.{1}.{2}', variables('major'), variables('minor'), parameters('al').context.item.version.number)]",
        "galleryName": "[variables('custom').gallery]",
        "generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
        "replicaCount": "[if(contains(variables('custom'), 'replicaCount'), variables('custom').replicaCount, 1)]",
        "targetRegions": "[if(contains(variables('custom'), 'targetRegions'), variables('custom').targetRegions, createArray(variables('location')))]",
        "diskName": "[format('{0}_{1}-{2}-{3}', variables('name'), variables('major'), variables('minor'), parameters('al').context.item.version.number)]",
        "hasDiskAccess": "[contains(variables('custom'), 'diskAccessId')]",
        "storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
        "publishAs": "[if(contains(variables('custom'), 'publishAs'), variables('custom').publishAs, createArray('galleryImage'))]",
        "galleryLink": "[format('[link="{0}/#@{1}/resource/{2}"]{2}[/link].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/galleries/images/versions', variables('galleryName'), variables('name'), variables('version')))]",
        "diskLink": "[format('[link="{0}/#@{1}/resource/{2}"]{2}[/link].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/disks', variables('diskName')))]",
        "outputLinks": "[filter(createArray(if(contains(variables('publishAs'), 'galleryImage'), variables('galleryLink'), null()), if(contains(variables('publishAs'), 'managedDisk'), variables('diskLink'), null())), lambda('link', not(equals(lambdaVariables('link'), null()))))]"
    },
    "resources": [
        {
            "condition": "[contains(variables('publishAs'), 'galleryImage')]",
            "type": "Microsoft.Compute/galleries/images",
            "name": "[format('{0}/{1}', variables('galleryName'), variables('name'))]",
            "apiVersion": "2021-07-01",
            "location": "[variables('location')]",
            "properties": {
                "description": "[parameters('al').context.item.description]",
                "features": "[if(variables('trustedLaunch'), createArray(createObject('name', 'SecurityType', 'value', 'TrustedLaunch')), null())]",
                "hyperVGeneration": "[variables('generation')]",
                "osType": "Windows",
                "osState": "Specialized",
                "endOfLifeDate": "2030-01-01T00:00:00Z",
                "identifier": {
                    "publisher": "AppLayering",
                    "offer": "[variables('name')]",
                    "sku": "[variables('generation')]"
                }
            },
            "tags": "[variables('tags')]",
            "resources": [
                {
                    "condition": "[contains(variables('publishAs'), 'galleryImage')]",
                    "type": "versions",
                    "apiVersion": "2022-03-03",
                    "name": "[variables('version')]",
                    "location": "[variables('location')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
                    ],
                    "tags": "[variables('tags')]",
                    "properties": {
                        "publishingProfile": {
                            "replicaCount": "[variables('replicaCount')]",
                            "targetRegions": "[map(variables('targetRegions'), lambda('item', if(contains(lambdaVariables('item'), 'name'), lambdaVariables('item'), createObject('name', lambdaVariables('item')))))]"
                        },
                        "storageProfile": {
                            "osDiskImage": {
                                "source": {
                                    "id": "[parameters('al').input.source.diskId]"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "condition": "[contains(variables('publishAs'), 'managedDisk')]",
            "type": "Microsoft.Compute/disks",
            "apiVersion": "2021-08-01",
            "name": "[variables('diskName')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "sku": {
                "name": "[variables('storageSku')]"
            },
            "properties": {
                "osType": "Windows",
                "hyperVGeneration": "[variables('generation')]",
                "creationData": {
                    "createOption": "Copy",
                    "sourceResourceId": "[parameters('al').input.source.diskId]"
                },
                "diskAccessId": "[if(variables('hasDiskAccess'), variables('custom').diskAccessId, null())]",
                "networkAccessPolicy": "[if(variables('hasDiskAccess'), 'AllowPrivate', 'AllowAll')]",
                "publicNetworkAccess": "[if(variables('hasDiskAccess'), 'Disabled', 'Enabled')]"
            }
        }
    ],
    "outputs": {
        "message": {
            "type": "string",
            "value": "[if(empty(variables('outputLinks')), null(), format('See {0}.', join(variables('outputLinks'), ' and ')))]"
        }
    }
}
<!--NeedCopy-->
スターターテンプレート