import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a managed disk. * * ## Example Usage * * ### With Create Empty * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const example = new azure.core.ResourceGroup("example", { * name: "example-resources", * location: "West Europe", * }); * const exampleManagedDisk = new azure.compute.ManagedDisk("example", { * name: "acctestmd", * location: example.location, * resourceGroupName: example.name, * storageAccountType: "Standard_LRS", * createOption: "Empty", * diskSizeGb: 1, * tags: { * environment: "staging", * }, * }); * ``` * * ### With Create Copy * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const example = new azure.core.ResourceGroup("example", { * name: "example-resources", * location: "West Europe", * }); * const source = new azure.compute.ManagedDisk("source", { * name: "acctestmd1", * location: example.location, * resourceGroupName: example.name, * storageAccountType: "Standard_LRS", * createOption: "Empty", * diskSizeGb: 1, * tags: { * environment: "staging", * }, * }); * const copy = new azure.compute.ManagedDisk("copy", { * name: "acctestmd2", * location: example.location, * resourceGroupName: example.name, * storageAccountType: "Standard_LRS", * createOption: "Copy", * sourceResourceId: source.id, * diskSizeGb: 1, * tags: { * environment: "staging", * }, * }); * ``` * * ## API Providers * * * This resource uses the following Azure API Providers: * * * `Microsoft.Compute` - 2023-04-02 * * ## Import * * Managed Disks can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:compute/managedDisk:ManagedDisk example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Compute/disks/manageddisk1 * ``` */ export declare class ManagedDisk extends pulumi.CustomResource { /** * Get an existing ManagedDisk resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: ManagedDiskState, opts?: pulumi.CustomResourceOptions): ManagedDisk; /** * Returns true if the given object is an instance of ManagedDisk. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is ManagedDisk; /** * The method to use when creating the managed disk. Changing this forces a new resource to be created. Possible values include: * * `Import` - Import a VHD file in to the managed disk (VHD specified with `sourceUri`). * * `ImportSecure` - Securely import a VHD file in to the managed disk (VHD specified with `sourceUri`). * * `Empty` - Create an empty managed disk. * * `Copy` - Copy an existing managed disk or snapshot (specified with `sourceResourceId`). * * `FromImage` - Copy a Platform Image (specified with `imageReferenceId`) * * `Restore` - Set by Azure Backup or Site Recovery on a restored disk (specified with `sourceResourceId`). * * `Upload` - Upload a VHD disk with the help of SAS URL (to be used with `uploadSizeBytes`). */ readonly createOption: pulumi.Output; /** * The ID of the disk access resource for using private endpoints on disks. * * > **Note:** `diskAccessId` is only supported when `networkAccessPolicy` is set to `AllowPrivate`. */ readonly diskAccessId: pulumi.Output; /** * The ID of a Disk Encryption Set which should be used to encrypt this Managed Disk. Conflicts with `secureVmDiskEncryptionSetId`. * * > **NOTE:** The Disk Encryption Set must have the `Reader` Role Assignment scoped on the Key Vault - in addition to an Access Policy to the Key Vault * * > **NOTE:** Disk Encryption Sets are in Public Preview in a limited set of regions */ readonly diskEncryptionSetId: pulumi.Output; /** * The number of IOPS allowed across all VMs mounting the shared disk as read-only; only settable for UltraSSD disks and PremiumV2 disks with shared disk enabled. One operation can transfer between 4k and 256k bytes. */ readonly diskIopsReadOnly: pulumi.Output; /** * The number of IOPS allowed for this disk; only settable for UltraSSD disks and PremiumV2 disks. One operation can transfer between 4k and 256k bytes. */ readonly diskIopsReadWrite: pulumi.Output; /** * The bandwidth allowed across all VMs mounting the shared disk as read-only; only settable for UltraSSD disks and PremiumV2 disks with shared disk enabled. MBps means millions of bytes per second. */ readonly diskMbpsReadOnly: pulumi.Output; /** * The bandwidth allowed for this disk; only settable for UltraSSD disks and PremiumV2 disks. MBps means millions of bytes per second. */ readonly diskMbpsReadWrite: pulumi.Output; /** * (Optional, Required for a new managed disk) Specifies the size of the managed disk to create in gigabytes. If `createOption` is `Copy` or `FromImage`, then the value must be equal to or greater than the source's size. The size can only be increased. * * > **NOTE:** In certain conditions the Data Disk size can be updated without shutting down the Virtual Machine, however only a subset of Virtual Machine SKUs/Disk combinations support this. More information can be found [for Linux Virtual Machines](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/expand-disks?tabs=azure-cli%2Cubuntu#expand-without-downtime) and [Windows Virtual Machines](https://learn.microsoft.com/azure/virtual-machines/windows/expand-os-disk#expand-without-downtime) respectively. * * > **NOTE:** If No Downtime Resizing is not available, be aware that changing this value is disruptive if the disk is attached to a Virtual Machine. The VM will be shut down and de-allocated as required by Azure to action the change. The provider will attempt to start the machine again after the update if it was in a `running` state when the apply was started. * * > **NOTE:** When upgrading `diskSizeGb` from a value less than 4095 to one greater than 4095, and if `storageAccountType` is not set to `PremiumV2_LRS` or `UltraSSD_LRS`, the disk will be detached from its associated Virtual Machine as required by Azure to action the change. Terraform will attempt to reattach the disk again after the update. * * > **Note:** Expanding Ultra Disks and Premium SSD v2 disks without downtime has additional limitations. Allow up to 10 minutes for the correct size to be reflected, and a `rescan` function may be required. For more details, refer to [Expand with Ultra Disks and Premium SSD v2](https://learn.microsoft.com/azure/virtual-machines/linux/expand-disks?tabs=ubuntu#expand-with-ultra-disks-and-premium-ssd-v2). */ readonly diskSizeGb: pulumi.Output; /** * Specifies the Edge Zone within the Azure Region where this Managed Disk should exist. Changing this forces a new Managed Disk to be created. */ readonly edgeZone: pulumi.Output; /** * A `encryptionSettings` block as defined below. * * > **NOTE:** Removing `encryptionSettings` forces a new resource to be created. */ readonly encryptionSettings: pulumi.Output; /** * ID of a Gallery Image Version to copy when `createOption` is `FromImage`. This field cannot be specified if imageReferenceId is specified. Changing this forces a new resource to be created. */ readonly galleryImageReferenceId: pulumi.Output; /** * The HyperV Generation of the Disk when the source of an `Import` or `Copy` operation targets a source that contains an operating system. Possible values are `V1` and `V2`. For `ImportSecure` it must be set to `V2`. Changing this forces a new resource to be created. */ readonly hyperVGeneration: pulumi.Output; /** * ID of an existing platform/marketplace disk image to copy when `createOption` is `FromImage`. This field cannot be specified if galleryImageReferenceId is specified. Changing this forces a new resource to be created. */ readonly imageReferenceId: pulumi.Output; /** * Specified the supported Azure location where the resource exists. Changing this forces a new resource to be created. */ readonly location: pulumi.Output; /** * Logical Sector Size. Possible values are: `512` and `4096`. Defaults to `4096`. Changing this forces a new resource to be created. * * > **NOTE:** Setting logical sector size is supported only with `UltraSSD_LRS` disks and `PremiumV2_LRS` disks. */ readonly logicalSectorSize: pulumi.Output; /** * The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a disk that can be mounted on multiple VMs at the same time. * * > **Note:** Premium SSD maxShares limit: `P15` and `P20` disks: 2. `P30`,`P40`,`P50` disks: 5. `P60`,`P70`,`P80` disks: 10. For ultra disks the `maxShares` minimum value is 1 and the maximum is 5. */ readonly maxShares: pulumi.Output; /** * Specifies the name of the Managed Disk. Changing this forces a new resource to be created. */ readonly name: pulumi.Output; /** * Policy for accessing the disk via network. Allowed values are `AllowAll`, `AllowPrivate`, and `DenyAll`. Defaults to `AllowAll`. */ readonly networkAccessPolicy: pulumi.Output; /** * Specifies if On-Demand Bursting is enabled for the Managed Disk. * * > **Note:** Credit-Based Bursting is enabled by default on all eligible disks. More information on [Credit-Based and On-Demand Bursting can be found in the documentation](https://docs.microsoft.com/azure/virtual-machines/disk-bursting#disk-level-bursting). */ readonly onDemandBurstingEnabled: pulumi.Output; /** * Specifies whether this Managed Disk should be optimized for frequent disk attachments (where a disk is attached/detached more than 5 times in a day). Defaults to `false`. * * > **Note:** Setting `optimizedFrequentAttachEnabled` to `true` causes the disks to not align with the fault domain of the Virtual Machine, which can have operational implications. */ readonly optimizedFrequentAttachEnabled: pulumi.Output; /** * Specify a value when the source of an `Import`, `ImportSecure` or `Copy` operation targets a source that contains an operating system. Valid values are `Linux` or `Windows`. */ readonly osType: pulumi.Output; /** * Specifies whether Performance Plus is enabled for this Managed Disk. Defaults to `false`. Changing this forces a new resource to be created. */ readonly performancePlusEnabled: pulumi.Output; /** * Whether it is allowed to access the disk via public network. Defaults to `true`. * * For more information on managed disks, such as sizing options and pricing, please check out the [Azure Documentation](https://docs.microsoft.com/azure/storage/storage-managed-disks-overview). */ readonly publicNetworkAccessEnabled: pulumi.Output; /** * The name of the Resource Group where the Managed Disk should exist. Changing this forces a new resource to be created. */ readonly resourceGroupName: pulumi.Output; /** * The ID of the Disk Encryption Set which should be used to Encrypt this OS Disk when the Virtual Machine is a Confidential VM. Conflicts with `diskEncryptionSetId`. Changing this forces a new resource to be created. * * > **NOTE:** `secureVmDiskEncryptionSetId` can only be specified when `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey`. */ readonly secureVmDiskEncryptionSetId: pulumi.Output; /** * Security Type of the Managed Disk when it is used for a Confidential VM. Possible values are `ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey`, `ConfidentialVM_DiskEncryptedWithPlatformKey` and `ConfidentialVM_DiskEncryptedWithCustomerKey`. Changing this forces a new resource to be created. * * > **NOTE:** When `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey` the value of `createOption` must be one of `FromImage` or `ImportSecure`. * * * > **NOTE:** `securityType` cannot be specified when `trustedLaunchEnabled` is set to true. * * > **NOTE:** `secureVmDiskEncryptionSetId` must be specified when `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey`. */ readonly securityType: pulumi.Output; /** * The ID of an existing Managed Disk or Snapshot to copy when `createOption` is `Copy` or the recovery point to restore when `createOption` is `Restore`. Changing this forces a new resource to be created. */ readonly sourceResourceId: pulumi.Output; /** * URI to a valid VHD file to be used when `createOption` is `Import` or `ImportSecure`. Changing this forces a new resource to be created. */ readonly sourceUri: pulumi.Output; /** * The ID of the Storage Account where the `sourceUri` is located. Required when `createOption` is set to `Import` or `ImportSecure`. Changing this forces a new resource to be created. */ readonly storageAccountId: pulumi.Output; /** * The type of storage to use for the managed disk. Possible values are `Standard_LRS`, `StandardSSD_ZRS`, `Premium_LRS`, `PremiumV2_LRS`, `Premium_ZRS`, `StandardSSD_LRS` or `UltraSSD_LRS`. * * > **Note:** Azure Ultra Disk Storage is only available in a region that support availability zones and can only enabled on the following VM series: `ESv3`, `DSv3`, `FSv3`, `LSv2`, `M` and `Mv2`. For more information see the `Azure Ultra Disk Storage` [product documentation](https://docs.microsoft.com/azure/virtual-machines/windows/disks-enable-ultra-ssd). */ readonly storageAccountType: pulumi.Output; /** * A mapping of tags to assign to the resource. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * The disk performance tier to use. Possible values are documented [here](https://docs.microsoft.com/azure/virtual-machines/disks-change-performance). This feature is currently supported only for premium SSDs. * * > **NOTE:** Changing this value is disruptive if the disk is attached to a Virtual Machine. The VM will be shut down and de-allocated as required by Azure to action the change. Terraform will attempt to start the machine again after the update if it was in a `running` state when the apply was started. */ readonly tier: pulumi.Output; /** * Specifies if Trusted Launch is enabled for the Managed Disk. Changing this forces a new resource to be created. * * > **Note:** Trusted Launch can only be enabled when `createOption` is `FromImage` or `Import`. */ readonly trustedLaunchEnabled: pulumi.Output; /** * Specifies the size of the managed disk to create in bytes. Required when `createOption` is `Upload`. The value must be equal to the source disk to be copied in bytes. Source disk size could be calculated with `ls -l` or `wc -c`. More information can be found at [Copy a managed disk](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/disks-upload-vhd-to-managed-disk-cli#copy-a-managed-disk). Changing this forces a new resource to be created. */ readonly uploadSizeBytes: pulumi.Output; /** * Specifies the Availability Zone in which this Managed Disk should be located. Changing this property forces a new resource to be created. * * > **Note:** Availability Zones are [only supported in select regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview). */ readonly zone: pulumi.Output; /** * Create a ManagedDisk resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: ManagedDiskArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering ManagedDisk resources. */ export interface ManagedDiskState { /** * The method to use when creating the managed disk. Changing this forces a new resource to be created. Possible values include: * * `Import` - Import a VHD file in to the managed disk (VHD specified with `sourceUri`). * * `ImportSecure` - Securely import a VHD file in to the managed disk (VHD specified with `sourceUri`). * * `Empty` - Create an empty managed disk. * * `Copy` - Copy an existing managed disk or snapshot (specified with `sourceResourceId`). * * `FromImage` - Copy a Platform Image (specified with `imageReferenceId`) * * `Restore` - Set by Azure Backup or Site Recovery on a restored disk (specified with `sourceResourceId`). * * `Upload` - Upload a VHD disk with the help of SAS URL (to be used with `uploadSizeBytes`). */ createOption?: pulumi.Input; /** * The ID of the disk access resource for using private endpoints on disks. * * > **Note:** `diskAccessId` is only supported when `networkAccessPolicy` is set to `AllowPrivate`. */ diskAccessId?: pulumi.Input; /** * The ID of a Disk Encryption Set which should be used to encrypt this Managed Disk. Conflicts with `secureVmDiskEncryptionSetId`. * * > **NOTE:** The Disk Encryption Set must have the `Reader` Role Assignment scoped on the Key Vault - in addition to an Access Policy to the Key Vault * * > **NOTE:** Disk Encryption Sets are in Public Preview in a limited set of regions */ diskEncryptionSetId?: pulumi.Input; /** * The number of IOPS allowed across all VMs mounting the shared disk as read-only; only settable for UltraSSD disks and PremiumV2 disks with shared disk enabled. One operation can transfer between 4k and 256k bytes. */ diskIopsReadOnly?: pulumi.Input; /** * The number of IOPS allowed for this disk; only settable for UltraSSD disks and PremiumV2 disks. One operation can transfer between 4k and 256k bytes. */ diskIopsReadWrite?: pulumi.Input; /** * The bandwidth allowed across all VMs mounting the shared disk as read-only; only settable for UltraSSD disks and PremiumV2 disks with shared disk enabled. MBps means millions of bytes per second. */ diskMbpsReadOnly?: pulumi.Input; /** * The bandwidth allowed for this disk; only settable for UltraSSD disks and PremiumV2 disks. MBps means millions of bytes per second. */ diskMbpsReadWrite?: pulumi.Input; /** * (Optional, Required for a new managed disk) Specifies the size of the managed disk to create in gigabytes. If `createOption` is `Copy` or `FromImage`, then the value must be equal to or greater than the source's size. The size can only be increased. * * > **NOTE:** In certain conditions the Data Disk size can be updated without shutting down the Virtual Machine, however only a subset of Virtual Machine SKUs/Disk combinations support this. More information can be found [for Linux Virtual Machines](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/expand-disks?tabs=azure-cli%2Cubuntu#expand-without-downtime) and [Windows Virtual Machines](https://learn.microsoft.com/azure/virtual-machines/windows/expand-os-disk#expand-without-downtime) respectively. * * > **NOTE:** If No Downtime Resizing is not available, be aware that changing this value is disruptive if the disk is attached to a Virtual Machine. The VM will be shut down and de-allocated as required by Azure to action the change. The provider will attempt to start the machine again after the update if it was in a `running` state when the apply was started. * * > **NOTE:** When upgrading `diskSizeGb` from a value less than 4095 to one greater than 4095, and if `storageAccountType` is not set to `PremiumV2_LRS` or `UltraSSD_LRS`, the disk will be detached from its associated Virtual Machine as required by Azure to action the change. Terraform will attempt to reattach the disk again after the update. * * > **Note:** Expanding Ultra Disks and Premium SSD v2 disks without downtime has additional limitations. Allow up to 10 minutes for the correct size to be reflected, and a `rescan` function may be required. For more details, refer to [Expand with Ultra Disks and Premium SSD v2](https://learn.microsoft.com/azure/virtual-machines/linux/expand-disks?tabs=ubuntu#expand-with-ultra-disks-and-premium-ssd-v2). */ diskSizeGb?: pulumi.Input; /** * Specifies the Edge Zone within the Azure Region where this Managed Disk should exist. Changing this forces a new Managed Disk to be created. */ edgeZone?: pulumi.Input; /** * A `encryptionSettings` block as defined below. * * > **NOTE:** Removing `encryptionSettings` forces a new resource to be created. */ encryptionSettings?: pulumi.Input; /** * ID of a Gallery Image Version to copy when `createOption` is `FromImage`. This field cannot be specified if imageReferenceId is specified. Changing this forces a new resource to be created. */ galleryImageReferenceId?: pulumi.Input; /** * The HyperV Generation of the Disk when the source of an `Import` or `Copy` operation targets a source that contains an operating system. Possible values are `V1` and `V2`. For `ImportSecure` it must be set to `V2`. Changing this forces a new resource to be created. */ hyperVGeneration?: pulumi.Input; /** * ID of an existing platform/marketplace disk image to copy when `createOption` is `FromImage`. This field cannot be specified if galleryImageReferenceId is specified. Changing this forces a new resource to be created. */ imageReferenceId?: pulumi.Input; /** * Specified the supported Azure location where the resource exists. Changing this forces a new resource to be created. */ location?: pulumi.Input; /** * Logical Sector Size. Possible values are: `512` and `4096`. Defaults to `4096`. Changing this forces a new resource to be created. * * > **NOTE:** Setting logical sector size is supported only with `UltraSSD_LRS` disks and `PremiumV2_LRS` disks. */ logicalSectorSize?: pulumi.Input; /** * The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a disk that can be mounted on multiple VMs at the same time. * * > **Note:** Premium SSD maxShares limit: `P15` and `P20` disks: 2. `P30`,`P40`,`P50` disks: 5. `P60`,`P70`,`P80` disks: 10. For ultra disks the `maxShares` minimum value is 1 and the maximum is 5. */ maxShares?: pulumi.Input; /** * Specifies the name of the Managed Disk. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * Policy for accessing the disk via network. Allowed values are `AllowAll`, `AllowPrivate`, and `DenyAll`. Defaults to `AllowAll`. */ networkAccessPolicy?: pulumi.Input; /** * Specifies if On-Demand Bursting is enabled for the Managed Disk. * * > **Note:** Credit-Based Bursting is enabled by default on all eligible disks. More information on [Credit-Based and On-Demand Bursting can be found in the documentation](https://docs.microsoft.com/azure/virtual-machines/disk-bursting#disk-level-bursting). */ onDemandBurstingEnabled?: pulumi.Input; /** * Specifies whether this Managed Disk should be optimized for frequent disk attachments (where a disk is attached/detached more than 5 times in a day). Defaults to `false`. * * > **Note:** Setting `optimizedFrequentAttachEnabled` to `true` causes the disks to not align with the fault domain of the Virtual Machine, which can have operational implications. */ optimizedFrequentAttachEnabled?: pulumi.Input; /** * Specify a value when the source of an `Import`, `ImportSecure` or `Copy` operation targets a source that contains an operating system. Valid values are `Linux` or `Windows`. */ osType?: pulumi.Input; /** * Specifies whether Performance Plus is enabled for this Managed Disk. Defaults to `false`. Changing this forces a new resource to be created. */ performancePlusEnabled?: pulumi.Input; /** * Whether it is allowed to access the disk via public network. Defaults to `true`. * * For more information on managed disks, such as sizing options and pricing, please check out the [Azure Documentation](https://docs.microsoft.com/azure/storage/storage-managed-disks-overview). */ publicNetworkAccessEnabled?: pulumi.Input; /** * The name of the Resource Group where the Managed Disk should exist. Changing this forces a new resource to be created. */ resourceGroupName?: pulumi.Input; /** * The ID of the Disk Encryption Set which should be used to Encrypt this OS Disk when the Virtual Machine is a Confidential VM. Conflicts with `diskEncryptionSetId`. Changing this forces a new resource to be created. * * > **NOTE:** `secureVmDiskEncryptionSetId` can only be specified when `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey`. */ secureVmDiskEncryptionSetId?: pulumi.Input; /** * Security Type of the Managed Disk when it is used for a Confidential VM. Possible values are `ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey`, `ConfidentialVM_DiskEncryptedWithPlatformKey` and `ConfidentialVM_DiskEncryptedWithCustomerKey`. Changing this forces a new resource to be created. * * > **NOTE:** When `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey` the value of `createOption` must be one of `FromImage` or `ImportSecure`. * * * > **NOTE:** `securityType` cannot be specified when `trustedLaunchEnabled` is set to true. * * > **NOTE:** `secureVmDiskEncryptionSetId` must be specified when `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey`. */ securityType?: pulumi.Input; /** * The ID of an existing Managed Disk or Snapshot to copy when `createOption` is `Copy` or the recovery point to restore when `createOption` is `Restore`. Changing this forces a new resource to be created. */ sourceResourceId?: pulumi.Input; /** * URI to a valid VHD file to be used when `createOption` is `Import` or `ImportSecure`. Changing this forces a new resource to be created. */ sourceUri?: pulumi.Input; /** * The ID of the Storage Account where the `sourceUri` is located. Required when `createOption` is set to `Import` or `ImportSecure`. Changing this forces a new resource to be created. */ storageAccountId?: pulumi.Input; /** * The type of storage to use for the managed disk. Possible values are `Standard_LRS`, `StandardSSD_ZRS`, `Premium_LRS`, `PremiumV2_LRS`, `Premium_ZRS`, `StandardSSD_LRS` or `UltraSSD_LRS`. * * > **Note:** Azure Ultra Disk Storage is only available in a region that support availability zones and can only enabled on the following VM series: `ESv3`, `DSv3`, `FSv3`, `LSv2`, `M` and `Mv2`. For more information see the `Azure Ultra Disk Storage` [product documentation](https://docs.microsoft.com/azure/virtual-machines/windows/disks-enable-ultra-ssd). */ storageAccountType?: pulumi.Input; /** * A mapping of tags to assign to the resource. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * The disk performance tier to use. Possible values are documented [here](https://docs.microsoft.com/azure/virtual-machines/disks-change-performance). This feature is currently supported only for premium SSDs. * * > **NOTE:** Changing this value is disruptive if the disk is attached to a Virtual Machine. The VM will be shut down and de-allocated as required by Azure to action the change. Terraform will attempt to start the machine again after the update if it was in a `running` state when the apply was started. */ tier?: pulumi.Input; /** * Specifies if Trusted Launch is enabled for the Managed Disk. Changing this forces a new resource to be created. * * > **Note:** Trusted Launch can only be enabled when `createOption` is `FromImage` or `Import`. */ trustedLaunchEnabled?: pulumi.Input; /** * Specifies the size of the managed disk to create in bytes. Required when `createOption` is `Upload`. The value must be equal to the source disk to be copied in bytes. Source disk size could be calculated with `ls -l` or `wc -c`. More information can be found at [Copy a managed disk](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/disks-upload-vhd-to-managed-disk-cli#copy-a-managed-disk). Changing this forces a new resource to be created. */ uploadSizeBytes?: pulumi.Input; /** * Specifies the Availability Zone in which this Managed Disk should be located. Changing this property forces a new resource to be created. * * > **Note:** Availability Zones are [only supported in select regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview). */ zone?: pulumi.Input; } /** * The set of arguments for constructing a ManagedDisk resource. */ export interface ManagedDiskArgs { /** * The method to use when creating the managed disk. Changing this forces a new resource to be created. Possible values include: * * `Import` - Import a VHD file in to the managed disk (VHD specified with `sourceUri`). * * `ImportSecure` - Securely import a VHD file in to the managed disk (VHD specified with `sourceUri`). * * `Empty` - Create an empty managed disk. * * `Copy` - Copy an existing managed disk or snapshot (specified with `sourceResourceId`). * * `FromImage` - Copy a Platform Image (specified with `imageReferenceId`) * * `Restore` - Set by Azure Backup or Site Recovery on a restored disk (specified with `sourceResourceId`). * * `Upload` - Upload a VHD disk with the help of SAS URL (to be used with `uploadSizeBytes`). */ createOption: pulumi.Input; /** * The ID of the disk access resource for using private endpoints on disks. * * > **Note:** `diskAccessId` is only supported when `networkAccessPolicy` is set to `AllowPrivate`. */ diskAccessId?: pulumi.Input; /** * The ID of a Disk Encryption Set which should be used to encrypt this Managed Disk. Conflicts with `secureVmDiskEncryptionSetId`. * * > **NOTE:** The Disk Encryption Set must have the `Reader` Role Assignment scoped on the Key Vault - in addition to an Access Policy to the Key Vault * * > **NOTE:** Disk Encryption Sets are in Public Preview in a limited set of regions */ diskEncryptionSetId?: pulumi.Input; /** * The number of IOPS allowed across all VMs mounting the shared disk as read-only; only settable for UltraSSD disks and PremiumV2 disks with shared disk enabled. One operation can transfer between 4k and 256k bytes. */ diskIopsReadOnly?: pulumi.Input; /** * The number of IOPS allowed for this disk; only settable for UltraSSD disks and PremiumV2 disks. One operation can transfer between 4k and 256k bytes. */ diskIopsReadWrite?: pulumi.Input; /** * The bandwidth allowed across all VMs mounting the shared disk as read-only; only settable for UltraSSD disks and PremiumV2 disks with shared disk enabled. MBps means millions of bytes per second. */ diskMbpsReadOnly?: pulumi.Input; /** * The bandwidth allowed for this disk; only settable for UltraSSD disks and PremiumV2 disks. MBps means millions of bytes per second. */ diskMbpsReadWrite?: pulumi.Input; /** * (Optional, Required for a new managed disk) Specifies the size of the managed disk to create in gigabytes. If `createOption` is `Copy` or `FromImage`, then the value must be equal to or greater than the source's size. The size can only be increased. * * > **NOTE:** In certain conditions the Data Disk size can be updated without shutting down the Virtual Machine, however only a subset of Virtual Machine SKUs/Disk combinations support this. More information can be found [for Linux Virtual Machines](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/expand-disks?tabs=azure-cli%2Cubuntu#expand-without-downtime) and [Windows Virtual Machines](https://learn.microsoft.com/azure/virtual-machines/windows/expand-os-disk#expand-without-downtime) respectively. * * > **NOTE:** If No Downtime Resizing is not available, be aware that changing this value is disruptive if the disk is attached to a Virtual Machine. The VM will be shut down and de-allocated as required by Azure to action the change. The provider will attempt to start the machine again after the update if it was in a `running` state when the apply was started. * * > **NOTE:** When upgrading `diskSizeGb` from a value less than 4095 to one greater than 4095, and if `storageAccountType` is not set to `PremiumV2_LRS` or `UltraSSD_LRS`, the disk will be detached from its associated Virtual Machine as required by Azure to action the change. Terraform will attempt to reattach the disk again after the update. * * > **Note:** Expanding Ultra Disks and Premium SSD v2 disks without downtime has additional limitations. Allow up to 10 minutes for the correct size to be reflected, and a `rescan` function may be required. For more details, refer to [Expand with Ultra Disks and Premium SSD v2](https://learn.microsoft.com/azure/virtual-machines/linux/expand-disks?tabs=ubuntu#expand-with-ultra-disks-and-premium-ssd-v2). */ diskSizeGb?: pulumi.Input; /** * Specifies the Edge Zone within the Azure Region where this Managed Disk should exist. Changing this forces a new Managed Disk to be created. */ edgeZone?: pulumi.Input; /** * A `encryptionSettings` block as defined below. * * > **NOTE:** Removing `encryptionSettings` forces a new resource to be created. */ encryptionSettings?: pulumi.Input; /** * ID of a Gallery Image Version to copy when `createOption` is `FromImage`. This field cannot be specified if imageReferenceId is specified. Changing this forces a new resource to be created. */ galleryImageReferenceId?: pulumi.Input; /** * The HyperV Generation of the Disk when the source of an `Import` or `Copy` operation targets a source that contains an operating system. Possible values are `V1` and `V2`. For `ImportSecure` it must be set to `V2`. Changing this forces a new resource to be created. */ hyperVGeneration?: pulumi.Input; /** * ID of an existing platform/marketplace disk image to copy when `createOption` is `FromImage`. This field cannot be specified if galleryImageReferenceId is specified. Changing this forces a new resource to be created. */ imageReferenceId?: pulumi.Input; /** * Specified the supported Azure location where the resource exists. Changing this forces a new resource to be created. */ location?: pulumi.Input; /** * Logical Sector Size. Possible values are: `512` and `4096`. Defaults to `4096`. Changing this forces a new resource to be created. * * > **NOTE:** Setting logical sector size is supported only with `UltraSSD_LRS` disks and `PremiumV2_LRS` disks. */ logicalSectorSize?: pulumi.Input; /** * The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a disk that can be mounted on multiple VMs at the same time. * * > **Note:** Premium SSD maxShares limit: `P15` and `P20` disks: 2. `P30`,`P40`,`P50` disks: 5. `P60`,`P70`,`P80` disks: 10. For ultra disks the `maxShares` minimum value is 1 and the maximum is 5. */ maxShares?: pulumi.Input; /** * Specifies the name of the Managed Disk. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * Policy for accessing the disk via network. Allowed values are `AllowAll`, `AllowPrivate`, and `DenyAll`. Defaults to `AllowAll`. */ networkAccessPolicy?: pulumi.Input; /** * Specifies if On-Demand Bursting is enabled for the Managed Disk. * * > **Note:** Credit-Based Bursting is enabled by default on all eligible disks. More information on [Credit-Based and On-Demand Bursting can be found in the documentation](https://docs.microsoft.com/azure/virtual-machines/disk-bursting#disk-level-bursting). */ onDemandBurstingEnabled?: pulumi.Input; /** * Specifies whether this Managed Disk should be optimized for frequent disk attachments (where a disk is attached/detached more than 5 times in a day). Defaults to `false`. * * > **Note:** Setting `optimizedFrequentAttachEnabled` to `true` causes the disks to not align with the fault domain of the Virtual Machine, which can have operational implications. */ optimizedFrequentAttachEnabled?: pulumi.Input; /** * Specify a value when the source of an `Import`, `ImportSecure` or `Copy` operation targets a source that contains an operating system. Valid values are `Linux` or `Windows`. */ osType?: pulumi.Input; /** * Specifies whether Performance Plus is enabled for this Managed Disk. Defaults to `false`. Changing this forces a new resource to be created. */ performancePlusEnabled?: pulumi.Input; /** * Whether it is allowed to access the disk via public network. Defaults to `true`. * * For more information on managed disks, such as sizing options and pricing, please check out the [Azure Documentation](https://docs.microsoft.com/azure/storage/storage-managed-disks-overview). */ publicNetworkAccessEnabled?: pulumi.Input; /** * The name of the Resource Group where the Managed Disk should exist. Changing this forces a new resource to be created. */ resourceGroupName: pulumi.Input; /** * The ID of the Disk Encryption Set which should be used to Encrypt this OS Disk when the Virtual Machine is a Confidential VM. Conflicts with `diskEncryptionSetId`. Changing this forces a new resource to be created. * * > **NOTE:** `secureVmDiskEncryptionSetId` can only be specified when `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey`. */ secureVmDiskEncryptionSetId?: pulumi.Input; /** * Security Type of the Managed Disk when it is used for a Confidential VM. Possible values are `ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey`, `ConfidentialVM_DiskEncryptedWithPlatformKey` and `ConfidentialVM_DiskEncryptedWithCustomerKey`. Changing this forces a new resource to be created. * * > **NOTE:** When `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey` the value of `createOption` must be one of `FromImage` or `ImportSecure`. * * * > **NOTE:** `securityType` cannot be specified when `trustedLaunchEnabled` is set to true. * * > **NOTE:** `secureVmDiskEncryptionSetId` must be specified when `securityType` is set to `ConfidentialVM_DiskEncryptedWithCustomerKey`. */ securityType?: pulumi.Input; /** * The ID of an existing Managed Disk or Snapshot to copy when `createOption` is `Copy` or the recovery point to restore when `createOption` is `Restore`. Changing this forces a new resource to be created. */ sourceResourceId?: pulumi.Input; /** * URI to a valid VHD file to be used when `createOption` is `Import` or `ImportSecure`. Changing this forces a new resource to be created. */ sourceUri?: pulumi.Input; /** * The ID of the Storage Account where the `sourceUri` is located. Required when `createOption` is set to `Import` or `ImportSecure`. Changing this forces a new resource to be created. */ storageAccountId?: pulumi.Input; /** * The type of storage to use for the managed disk. Possible values are `Standard_LRS`, `StandardSSD_ZRS`, `Premium_LRS`, `PremiumV2_LRS`, `Premium_ZRS`, `StandardSSD_LRS` or `UltraSSD_LRS`. * * > **Note:** Azure Ultra Disk Storage is only available in a region that support availability zones and can only enabled on the following VM series: `ESv3`, `DSv3`, `FSv3`, `LSv2`, `M` and `Mv2`. For more information see the `Azure Ultra Disk Storage` [product documentation](https://docs.microsoft.com/azure/virtual-machines/windows/disks-enable-ultra-ssd). */ storageAccountType: pulumi.Input; /** * A mapping of tags to assign to the resource. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * The disk performance tier to use. Possible values are documented [here](https://docs.microsoft.com/azure/virtual-machines/disks-change-performance). This feature is currently supported only for premium SSDs. * * > **NOTE:** Changing this value is disruptive if the disk is attached to a Virtual Machine. The VM will be shut down and de-allocated as required by Azure to action the change. Terraform will attempt to start the machine again after the update if it was in a `running` state when the apply was started. */ tier?: pulumi.Input; /** * Specifies if Trusted Launch is enabled for the Managed Disk. Changing this forces a new resource to be created. * * > **Note:** Trusted Launch can only be enabled when `createOption` is `FromImage` or `Import`. */ trustedLaunchEnabled?: pulumi.Input; /** * Specifies the size of the managed disk to create in bytes. Required when `createOption` is `Upload`. The value must be equal to the source disk to be copied in bytes. Source disk size could be calculated with `ls -l` or `wc -c`. More information can be found at [Copy a managed disk](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/disks-upload-vhd-to-managed-disk-cli#copy-a-managed-disk). Changing this forces a new resource to be created. */ uploadSizeBytes?: pulumi.Input; /** * Specifies the Availability Zone in which this Managed Disk should be located. Changing this property forces a new resource to be created. * * > **Note:** Availability Zones are [only supported in select regions at this time](https://docs.microsoft.com/azure/availability-zones/az-overview). */ zone?: pulumi.Input; }