import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a Windows Virtual Machine Scale Set. * * ## Disclaimers * * > **Note:** This resource will only create Virtual Machine Scale Sets with the **Uniform** Orchestration Mode. For Virtual Machine Scale Sets with **Flexible** orchestration mode, use `azure.compute.OrchestratedVirtualMachineScaleSet`. Flexible orchestration mode is recommended for workloads on Azure. * * > **Note:** All arguments including the administrator login and password will be stored in the raw state as plain-text. Read more about [sensitive data](https://www.terraform.io/docs/state/sensitive-data.html) in state. * * > **Note:** This provider will automatically update & reimage the nodes in the Scale Set (if Required) during an Update - this behaviour can be configured using the `features` setting within the Provider block. * * > **Note:** This resource does not support Unmanaged Disks. If you need to use Unmanaged Disks you can continue to use the `azure.compute.ScaleSet` resource instead. * * ## Example Usage * * This example provisions a basic Windows Virtual Machine Scale Set on an internal network. * * ```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 exampleVirtualNetwork = new azure.network.VirtualNetwork("example", { * name: "example-network", * resourceGroupName: example.name, * location: example.location, * addressSpaces: ["10.0.0.0/16"], * }); * const internal = new azure.network.Subnet("internal", { * name: "internal", * resourceGroupName: example.name, * virtualNetworkName: exampleVirtualNetwork.name, * addressPrefixes: ["10.0.2.0/24"], * }); * const exampleWindowsVirtualMachineScaleSet = new azure.compute.WindowsVirtualMachineScaleSet("example", { * name: "example-vmss", * resourceGroupName: example.name, * location: example.location, * sku: "Standard_F2", * instances: 1, * adminPassword: "P@55w0rd1234!", * adminUsername: "adminuser", * computerNamePrefix: "vm-", * sourceImageReference: { * publisher: "MicrosoftWindowsServer", * offer: "WindowsServer", * sku: "2016-Datacenter-Server-Core", * version: "latest", * }, * osDisk: { * storageAccountType: "Standard_LRS", * caching: "ReadWrite", * }, * networkInterfaces: [{ * name: "example", * primary: true, * ipConfigurations: [{ * name: "internal", * primary: true, * subnetId: internal.id, * }], * }], * }); * ``` * * ## API Providers * * * This resource uses the following Azure API Providers: * * * `Microsoft.Compute` - 2024-11-01 * * ## Import * * Windows Virtual Machine Scale Sets can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:compute/windowsVirtualMachineScaleSet:WindowsVirtualMachineScaleSet example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1 * ``` */ export declare class WindowsVirtualMachineScaleSet extends pulumi.CustomResource { /** * Get an existing WindowsVirtualMachineScaleSet 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?: WindowsVirtualMachineScaleSetState, opts?: pulumi.CustomResourceOptions): WindowsVirtualMachineScaleSet; /** * Returns true if the given object is an instance of WindowsVirtualMachineScaleSet. 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 WindowsVirtualMachineScaleSet; /** * An `additionalCapabilities` block as defined below. */ readonly additionalCapabilities: pulumi.Output; /** * One or more `additionalUnattendContent` blocks as defined below. Changing this forces a new resource to be created. */ readonly additionalUnattendContents: pulumi.Output; /** * The Password which should be used for the local-administrator on this Virtual Machine. Changing this forces a new resource to be created. */ readonly adminPassword: pulumi.Output; /** * The username of the local administrator on each Virtual Machine Scale Set instance. Changing this forces a new resource to be created. */ readonly adminUsername: pulumi.Output; /** * An `automaticInstanceRepair` block as defined below. To enable the automatic instance repair, this Virtual Machine Scale Set must have a valid `healthProbeId` or an [Application Health Extension](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-health-extension). * * > **Note:** For more information about Automatic Instance Repair, please refer to [this doc](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs). */ readonly automaticInstanceRepair: pulumi.Output; /** * An `automaticOsUpgradePolicy` block as defined below. This can only be specified when `upgradeMode` is set to either `Automatic` or `Rolling`. */ readonly automaticOsUpgradePolicy: pulumi.Output; /** * A `bootDiagnostics` block as defined below. */ readonly bootDiagnostics: pulumi.Output; /** * Specifies the ID of the Capacity Reservation Group which the Virtual Machine Scale Set should be allocated to. Changing this forces a new resource to be created. * * > **Note:** `capacityReservationGroupId` cannot be used with `proximityPlacementGroupId` * * > **Note:** `singlePlacementGroup` must be set to `false` when `capacityReservationGroupId` is specified. */ readonly capacityReservationGroupId: pulumi.Output; /** * The prefix which should be used for the name of the Virtual Machines in this Scale Set. If unspecified this defaults to the value for the `name` field. If the value of the `name` field is not a valid `computerNamePrefix`, then you must specify `computerNamePrefix`. Changing this forces a new resource to be created. */ readonly computerNamePrefix: pulumi.Output; /** * The Base64-Encoded Custom Data which should be used for this Virtual Machine Scale Set. * * > **Note:** When Custom Data has been configured, it's not possible to remove it without tainting the Virtual Machine Scale Set, due to a limitation of the Azure API. */ readonly customData: pulumi.Output; /** * One or more `dataDisk` blocks as defined below. */ readonly dataDisks: pulumi.Output; /** * Should Virtual Machine Extensions be run on Overprovisioned Virtual Machines in the Scale Set? Defaults to `false`. */ readonly doNotRunExtensionsOnOverprovisionedMachines: pulumi.Output; /** * Specifies the Edge Zone within the Azure Region where this Windows Virtual Machine Scale Set should exist. Changing this forces a new Windows Virtual Machine Scale Set to be created. */ readonly edgeZone: pulumi.Output; /** * Are automatic updates enabled for this Virtual Machine? Defaults to `true`. */ readonly enableAutomaticUpdates: pulumi.Output; /** * Should all of the disks (including the temp disk) attached to this Virtual Machine be encrypted by enabling Encryption at Host? */ readonly encryptionAtHostEnabled: pulumi.Output; /** * Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created. * * > **Note:** This can only be configured when `priority` is set to `Spot`. */ readonly evictionPolicy: pulumi.Output; /** * Should extension operations be allowed on the Virtual Machine Scale Set? Possible values are `true` or `false`. Defaults to `true`. Changing this forces a new Windows Virtual Machine Scale Set to be created. * * > **Note:** `extensionOperationsEnabled` may only be set to `false` if there are no extensions defined in the `extension` field. */ readonly extensionOperationsEnabled: pulumi.Output; /** * One or more `extension` blocks as defined below */ readonly extensions: pulumi.Output; /** * Specifies the duration allocated for all extensions to start. The time duration should be between `15` minutes and `120` minutes (inclusive) and should be specified in ISO 8601 format. Defaults to `PT1H30M`. */ readonly extensionsTimeBudget: pulumi.Output; /** * One or more `galleryApplication` blocks as defined below. */ readonly galleryApplications: pulumi.Output; /** * The ID of a Load Balancer Probe which should be used to determine the health of an instance. This is Required and can only be specified when `upgradeMode` is set to `Automatic` or `Rolling`. */ readonly healthProbeId: pulumi.Output; /** * Specifies the ID of the dedicated host group that the virtual machine scale set resides in. Changing this forces a new resource to be created. */ readonly hostGroupId: pulumi.Output; /** * An `identity` block as defined below. */ readonly identity: pulumi.Output; /** * The number of Virtual Machines in the Scale Set. * * > **NOTE:** If you're using AutoScaling, you may wish to use [`Ignore Changes` functionality](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to ignore changes to this field. */ readonly instances: pulumi.Output; /** * Specifies the type of on-premise license (also known as [Azure Hybrid Use Benefit](https://docs.microsoft.com/en-gb/windows-server/get-started/azure-hybrid-benefit)) which should be used for this Virtual Machine Scale Set. Possible values are `None`, `Windows_Client` and `Windows_Server`. */ readonly licenseType: pulumi.Output; /** * The Azure location where the Windows Virtual Machine Scale Set should exist. Changing this forces a new resource to be created. */ readonly location: pulumi.Output; /** * The maximum price you're willing to pay for each Virtual Machine in this Scale Set, in US Dollars; which must be greater than the current spot price. If this bid price falls below the current spot price the Virtual Machines in the Scale Set will be evicted using the `evictionPolicy`. Defaults to `-1`, which means that each Virtual Machine in the Scale Set should not be evicted for price reasons. * * > **Note:** This can only be configured when `priority` is set to `Spot`. */ readonly maxBidPrice: pulumi.Output; /** * The name of the Windows Virtual Machine Scale Set. Changing this forces a new resource to be created. */ readonly name: pulumi.Output; /** * One or more `networkInterface` blocks as defined below. */ readonly networkInterfaces: pulumi.Output; /** * An `osDisk` block as defined below. */ readonly osDisk: pulumi.Output; /** * Should Azure over-provision Virtual Machines in this Scale Set? This means that multiple Virtual Machines will be provisioned and Azure will keep the instances which become available first - which improves provisioning success rates and improves deployment time. You're not billed for these over-provisioned VM's and they don't count towards the Subscription Quota. Defaults to `true`. */ readonly overprovision: pulumi.Output; /** * A `plan` block as defined below. Changing this forces a new resource to be created. * * > **Note:** When using an image from Azure Marketplace a `plan` must be specified. */ readonly plan: pulumi.Output; /** * Specifies the number of fault domains that are used by this Linux Virtual Machine Scale Set. Changing this forces a new resource to be created. */ readonly platformFaultDomainCount: pulumi.Output; /** * The Priority of this Virtual Machine Scale Set. Possible values are `Regular` and `Spot`. Defaults to `Regular`. Changing this value forces a new resource. * * > **Note:** When `priority` is set to `Spot` an `evictionPolicy` must be specified. */ readonly priority: pulumi.Output; /** * Should the Azure VM Agent be provisioned on each Virtual Machine in the Scale Set? Defaults to `true`. Changing this value forces a new resource to be created. */ readonly provisionVmAgent: pulumi.Output; /** * The ID of the Proximity Placement Group in which the Virtual Machine Scale Set should be assigned to. Changing this forces a new resource to be created. */ readonly proximityPlacementGroupId: pulumi.Output; /** * Should resilient VM creation be enabled? When enabled, the service will attempt to create VMs in alternative fault domains or zones if the primary location fails during creation. Defaults to `false`. * * > **Note:** `resilientVmCreationEnabled` is currently not supported in the `austriaeast`, `belgiumcentral`, `centraluseuap`, `chilecentral`, `indonesiacentral`, `israelnorthwest`, `malaysiawest`, `mexicocentral`, `newzealandnorth`, `southcentralus2`, `southindia`, `southeastus3`, `southwestus`, `eastasia`, `eastus`, `southcentralus`, `southeastasia`, and `westeurope` regions. */ readonly resilientVmCreationEnabled: pulumi.Output; /** * Should resilient VM deletion be enabled? When enabled, the service will use a more resilient deletion process that attempts to gracefully handle failures during VM termination. Defaults to `false`. * * > **Note:** `resilientVmDeletionEnabled` is currently not supported in the `austriaeast`, `belgiumcentral`, `centraluseuap`, `chilecentral`, `indonesiacentral`, `israelnorthwest`, `malaysiawest`, `mexicocentral`, `newzealandnorth`, `southcentralus2`, `southindia`, `southeastus3`, `southwestus`, `eastasia`, `eastus`, `southcentralus`, `southeastasia`, and `westeurope` regions. */ readonly resilientVmDeletionEnabled: pulumi.Output; /** * The name of the Resource Group in which the Windows Virtual Machine Scale Set should be exist. Changing this forces a new resource to be created. */ readonly resourceGroupName: pulumi.Output; /** * A `rollingUpgradePolicy` block as defined below. This is Required and can only be specified when `upgradeMode` is set to `Automatic` or `Rolling`. Changing this forces a new resource to be created. */ readonly rollingUpgradePolicy: pulumi.Output; /** * A `scaleIn` block as defined below. */ readonly scaleIn: pulumi.Output; /** * One or more `secret` blocks as defined below. */ readonly secrets: pulumi.Output; /** * Specifies if Secure Boot and Trusted Launch is enabled for the Virtual Machine. Changing this forces a new resource to be created. */ readonly secureBootEnabled: pulumi.Output; /** * Should this Virtual Machine Scale Set be limited to a Single Placement Group, which means the number of instances will be capped at 100 Virtual Machines. Defaults to `true`. */ readonly singlePlacementGroup: pulumi.Output; /** * The Virtual Machine SKU for the Scale Set, such as `Standard_F2`. */ readonly sku: pulumi.Output; /** * The ID of an Image which each Virtual Machine in this Scale Set should be based on. Possible Image ID types include `Image ID`, `Shared Image ID`, `Shared Image Version ID`, `Community Gallery Image ID`, `Community Gallery Image Version ID`, `Shared Gallery Image ID` and `Shared Gallery Image Version ID`. * * > **Note:** One of either `sourceImageId` or `sourceImageReference` must be set. */ readonly sourceImageId: pulumi.Output; /** * A `sourceImageReference` block as defined below. * * > **Note:** One of either `sourceImageId` or `sourceImageReference` must be set. */ readonly sourceImageReference: pulumi.Output; /** * A `spotRestore` block as defined below. */ readonly spotRestore: pulumi.Output; /** * A mapping of tags which should be assigned to this Virtual Machine Scale Set. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * A `terminationNotification` block as defined below. */ readonly terminationNotification: pulumi.Output; /** * Specifies the time zone of the virtual machine, [the possible values are defined here](https://jackstromberg.com/2017/01/list-of-time-zones-consumed-by-azure/). */ readonly timezone: pulumi.Output; /** * The Unique ID for this Windows Virtual Machine Scale Set. */ readonly uniqueId: pulumi.Output; /** * Specifies how Upgrades (e.g. changing the Image/SKU) should be performed to Virtual Machine Instances. Possible values are `Automatic`, `Manual` and `Rolling`. Defaults to `Manual`. Changing this forces a new resource to be created. * * > **Note:** If rolling upgrades are configured and running on a Linux Virtual Machine Scale Set, they will be cancelled when Terraform tries to destroy the resource. */ readonly upgradeMode: pulumi.Output; /** * The Base64-Encoded User Data which should be used for this Virtual Machine Scale Set. */ readonly userData: pulumi.Output; /** * Specifies if vTPM (Virtual Trusted Platform Module) and Trusted Launch is enabled for the Virtual Machine. Changing this forces a new resource to be created. */ readonly vtpmEnabled: pulumi.Output; /** * One or more `winrmListener` blocks as defined below. Changing this forces a new resource to be created. */ readonly winrmListeners: pulumi.Output; /** * Should the Virtual Machines in this Scale Set be strictly evenly distributed across Availability Zones? Defaults to `false`. Changing this forces a new resource to be created. * * > **Note:** This can only be set to `true` when one or more `zones` are configured. */ readonly zoneBalance: pulumi.Output; /** * Specifies a list of Availability Zones in which this Windows Virtual Machine Scale Set should be located. * * > **Note:** Updating `zones` to remove an existing zone forces a new Virtual Machine Scale Set to be created. */ readonly zones: pulumi.Output; /** * Create a WindowsVirtualMachineScaleSet 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: WindowsVirtualMachineScaleSetArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering WindowsVirtualMachineScaleSet resources. */ export interface WindowsVirtualMachineScaleSetState { /** * An `additionalCapabilities` block as defined below. */ additionalCapabilities?: pulumi.Input; /** * One or more `additionalUnattendContent` blocks as defined below. Changing this forces a new resource to be created. */ additionalUnattendContents?: pulumi.Input[]>; /** * The Password which should be used for the local-administrator on this Virtual Machine. Changing this forces a new resource to be created. */ adminPassword?: pulumi.Input; /** * The username of the local administrator on each Virtual Machine Scale Set instance. Changing this forces a new resource to be created. */ adminUsername?: pulumi.Input; /** * An `automaticInstanceRepair` block as defined below. To enable the automatic instance repair, this Virtual Machine Scale Set must have a valid `healthProbeId` or an [Application Health Extension](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-health-extension). * * > **Note:** For more information about Automatic Instance Repair, please refer to [this doc](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs). */ automaticInstanceRepair?: pulumi.Input; /** * An `automaticOsUpgradePolicy` block as defined below. This can only be specified when `upgradeMode` is set to either `Automatic` or `Rolling`. */ automaticOsUpgradePolicy?: pulumi.Input; /** * A `bootDiagnostics` block as defined below. */ bootDiagnostics?: pulumi.Input; /** * Specifies the ID of the Capacity Reservation Group which the Virtual Machine Scale Set should be allocated to. Changing this forces a new resource to be created. * * > **Note:** `capacityReservationGroupId` cannot be used with `proximityPlacementGroupId` * * > **Note:** `singlePlacementGroup` must be set to `false` when `capacityReservationGroupId` is specified. */ capacityReservationGroupId?: pulumi.Input; /** * The prefix which should be used for the name of the Virtual Machines in this Scale Set. If unspecified this defaults to the value for the `name` field. If the value of the `name` field is not a valid `computerNamePrefix`, then you must specify `computerNamePrefix`. Changing this forces a new resource to be created. */ computerNamePrefix?: pulumi.Input; /** * The Base64-Encoded Custom Data which should be used for this Virtual Machine Scale Set. * * > **Note:** When Custom Data has been configured, it's not possible to remove it without tainting the Virtual Machine Scale Set, due to a limitation of the Azure API. */ customData?: pulumi.Input; /** * One or more `dataDisk` blocks as defined below. */ dataDisks?: pulumi.Input[]>; /** * Should Virtual Machine Extensions be run on Overprovisioned Virtual Machines in the Scale Set? Defaults to `false`. */ doNotRunExtensionsOnOverprovisionedMachines?: pulumi.Input; /** * Specifies the Edge Zone within the Azure Region where this Windows Virtual Machine Scale Set should exist. Changing this forces a new Windows Virtual Machine Scale Set to be created. */ edgeZone?: pulumi.Input; /** * Are automatic updates enabled for this Virtual Machine? Defaults to `true`. */ enableAutomaticUpdates?: pulumi.Input; /** * Should all of the disks (including the temp disk) attached to this Virtual Machine be encrypted by enabling Encryption at Host? */ encryptionAtHostEnabled?: pulumi.Input; /** * Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created. * * > **Note:** This can only be configured when `priority` is set to `Spot`. */ evictionPolicy?: pulumi.Input; /** * Should extension operations be allowed on the Virtual Machine Scale Set? Possible values are `true` or `false`. Defaults to `true`. Changing this forces a new Windows Virtual Machine Scale Set to be created. * * > **Note:** `extensionOperationsEnabled` may only be set to `false` if there are no extensions defined in the `extension` field. */ extensionOperationsEnabled?: pulumi.Input; /** * One or more `extension` blocks as defined below */ extensions?: pulumi.Input[]>; /** * Specifies the duration allocated for all extensions to start. The time duration should be between `15` minutes and `120` minutes (inclusive) and should be specified in ISO 8601 format. Defaults to `PT1H30M`. */ extensionsTimeBudget?: pulumi.Input; /** * One or more `galleryApplication` blocks as defined below. */ galleryApplications?: pulumi.Input[]>; /** * The ID of a Load Balancer Probe which should be used to determine the health of an instance. This is Required and can only be specified when `upgradeMode` is set to `Automatic` or `Rolling`. */ healthProbeId?: pulumi.Input; /** * Specifies the ID of the dedicated host group that the virtual machine scale set resides in. Changing this forces a new resource to be created. */ hostGroupId?: pulumi.Input; /** * An `identity` block as defined below. */ identity?: pulumi.Input; /** * The number of Virtual Machines in the Scale Set. * * > **NOTE:** If you're using AutoScaling, you may wish to use [`Ignore Changes` functionality](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to ignore changes to this field. */ instances?: pulumi.Input; /** * Specifies the type of on-premise license (also known as [Azure Hybrid Use Benefit](https://docs.microsoft.com/en-gb/windows-server/get-started/azure-hybrid-benefit)) which should be used for this Virtual Machine Scale Set. Possible values are `None`, `Windows_Client` and `Windows_Server`. */ licenseType?: pulumi.Input; /** * The Azure location where the Windows Virtual Machine Scale Set should exist. Changing this forces a new resource to be created. */ location?: pulumi.Input; /** * The maximum price you're willing to pay for each Virtual Machine in this Scale Set, in US Dollars; which must be greater than the current spot price. If this bid price falls below the current spot price the Virtual Machines in the Scale Set will be evicted using the `evictionPolicy`. Defaults to `-1`, which means that each Virtual Machine in the Scale Set should not be evicted for price reasons. * * > **Note:** This can only be configured when `priority` is set to `Spot`. */ maxBidPrice?: pulumi.Input; /** * The name of the Windows Virtual Machine Scale Set. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * One or more `networkInterface` blocks as defined below. */ networkInterfaces?: pulumi.Input[]>; /** * An `osDisk` block as defined below. */ osDisk?: pulumi.Input; /** * Should Azure over-provision Virtual Machines in this Scale Set? This means that multiple Virtual Machines will be provisioned and Azure will keep the instances which become available first - which improves provisioning success rates and improves deployment time. You're not billed for these over-provisioned VM's and they don't count towards the Subscription Quota. Defaults to `true`. */ overprovision?: pulumi.Input; /** * A `plan` block as defined below. Changing this forces a new resource to be created. * * > **Note:** When using an image from Azure Marketplace a `plan` must be specified. */ plan?: pulumi.Input; /** * Specifies the number of fault domains that are used by this Linux Virtual Machine Scale Set. Changing this forces a new resource to be created. */ platformFaultDomainCount?: pulumi.Input; /** * The Priority of this Virtual Machine Scale Set. Possible values are `Regular` and `Spot`. Defaults to `Regular`. Changing this value forces a new resource. * * > **Note:** When `priority` is set to `Spot` an `evictionPolicy` must be specified. */ priority?: pulumi.Input; /** * Should the Azure VM Agent be provisioned on each Virtual Machine in the Scale Set? Defaults to `true`. Changing this value forces a new resource to be created. */ provisionVmAgent?: pulumi.Input; /** * The ID of the Proximity Placement Group in which the Virtual Machine Scale Set should be assigned to. Changing this forces a new resource to be created. */ proximityPlacementGroupId?: pulumi.Input; /** * Should resilient VM creation be enabled? When enabled, the service will attempt to create VMs in alternative fault domains or zones if the primary location fails during creation. Defaults to `false`. * * > **Note:** `resilientVmCreationEnabled` is currently not supported in the `austriaeast`, `belgiumcentral`, `centraluseuap`, `chilecentral`, `indonesiacentral`, `israelnorthwest`, `malaysiawest`, `mexicocentral`, `newzealandnorth`, `southcentralus2`, `southindia`, `southeastus3`, `southwestus`, `eastasia`, `eastus`, `southcentralus`, `southeastasia`, and `westeurope` regions. */ resilientVmCreationEnabled?: pulumi.Input; /** * Should resilient VM deletion be enabled? When enabled, the service will use a more resilient deletion process that attempts to gracefully handle failures during VM termination. Defaults to `false`. * * > **Note:** `resilientVmDeletionEnabled` is currently not supported in the `austriaeast`, `belgiumcentral`, `centraluseuap`, `chilecentral`, `indonesiacentral`, `israelnorthwest`, `malaysiawest`, `mexicocentral`, `newzealandnorth`, `southcentralus2`, `southindia`, `southeastus3`, `southwestus`, `eastasia`, `eastus`, `southcentralus`, `southeastasia`, and `westeurope` regions. */ resilientVmDeletionEnabled?: pulumi.Input; /** * The name of the Resource Group in which the Windows Virtual Machine Scale Set should be exist. Changing this forces a new resource to be created. */ resourceGroupName?: pulumi.Input; /** * A `rollingUpgradePolicy` block as defined below. This is Required and can only be specified when `upgradeMode` is set to `Automatic` or `Rolling`. Changing this forces a new resource to be created. */ rollingUpgradePolicy?: pulumi.Input; /** * A `scaleIn` block as defined below. */ scaleIn?: pulumi.Input; /** * One or more `secret` blocks as defined below. */ secrets?: pulumi.Input[]>; /** * Specifies if Secure Boot and Trusted Launch is enabled for the Virtual Machine. Changing this forces a new resource to be created. */ secureBootEnabled?: pulumi.Input; /** * Should this Virtual Machine Scale Set be limited to a Single Placement Group, which means the number of instances will be capped at 100 Virtual Machines. Defaults to `true`. */ singlePlacementGroup?: pulumi.Input; /** * The Virtual Machine SKU for the Scale Set, such as `Standard_F2`. */ sku?: pulumi.Input; /** * The ID of an Image which each Virtual Machine in this Scale Set should be based on. Possible Image ID types include `Image ID`, `Shared Image ID`, `Shared Image Version ID`, `Community Gallery Image ID`, `Community Gallery Image Version ID`, `Shared Gallery Image ID` and `Shared Gallery Image Version ID`. * * > **Note:** One of either `sourceImageId` or `sourceImageReference` must be set. */ sourceImageId?: pulumi.Input; /** * A `sourceImageReference` block as defined below. * * > **Note:** One of either `sourceImageId` or `sourceImageReference` must be set. */ sourceImageReference?: pulumi.Input; /** * A `spotRestore` block as defined below. */ spotRestore?: pulumi.Input; /** * A mapping of tags which should be assigned to this Virtual Machine Scale Set. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * A `terminationNotification` block as defined below. */ terminationNotification?: pulumi.Input; /** * Specifies the time zone of the virtual machine, [the possible values are defined here](https://jackstromberg.com/2017/01/list-of-time-zones-consumed-by-azure/). */ timezone?: pulumi.Input; /** * The Unique ID for this Windows Virtual Machine Scale Set. */ uniqueId?: pulumi.Input; /** * Specifies how Upgrades (e.g. changing the Image/SKU) should be performed to Virtual Machine Instances. Possible values are `Automatic`, `Manual` and `Rolling`. Defaults to `Manual`. Changing this forces a new resource to be created. * * > **Note:** If rolling upgrades are configured and running on a Linux Virtual Machine Scale Set, they will be cancelled when Terraform tries to destroy the resource. */ upgradeMode?: pulumi.Input; /** * The Base64-Encoded User Data which should be used for this Virtual Machine Scale Set. */ userData?: pulumi.Input; /** * Specifies if vTPM (Virtual Trusted Platform Module) and Trusted Launch is enabled for the Virtual Machine. Changing this forces a new resource to be created. */ vtpmEnabled?: pulumi.Input; /** * One or more `winrmListener` blocks as defined below. Changing this forces a new resource to be created. */ winrmListeners?: pulumi.Input[]>; /** * Should the Virtual Machines in this Scale Set be strictly evenly distributed across Availability Zones? Defaults to `false`. Changing this forces a new resource to be created. * * > **Note:** This can only be set to `true` when one or more `zones` are configured. */ zoneBalance?: pulumi.Input; /** * Specifies a list of Availability Zones in which this Windows Virtual Machine Scale Set should be located. * * > **Note:** Updating `zones` to remove an existing zone forces a new Virtual Machine Scale Set to be created. */ zones?: pulumi.Input[]>; } /** * The set of arguments for constructing a WindowsVirtualMachineScaleSet resource. */ export interface WindowsVirtualMachineScaleSetArgs { /** * An `additionalCapabilities` block as defined below. */ additionalCapabilities?: pulumi.Input; /** * One or more `additionalUnattendContent` blocks as defined below. Changing this forces a new resource to be created. */ additionalUnattendContents?: pulumi.Input[]>; /** * The Password which should be used for the local-administrator on this Virtual Machine. Changing this forces a new resource to be created. */ adminPassword: pulumi.Input; /** * The username of the local administrator on each Virtual Machine Scale Set instance. Changing this forces a new resource to be created. */ adminUsername: pulumi.Input; /** * An `automaticInstanceRepair` block as defined below. To enable the automatic instance repair, this Virtual Machine Scale Set must have a valid `healthProbeId` or an [Application Health Extension](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-health-extension). * * > **Note:** For more information about Automatic Instance Repair, please refer to [this doc](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs). */ automaticInstanceRepair?: pulumi.Input; /** * An `automaticOsUpgradePolicy` block as defined below. This can only be specified when `upgradeMode` is set to either `Automatic` or `Rolling`. */ automaticOsUpgradePolicy?: pulumi.Input; /** * A `bootDiagnostics` block as defined below. */ bootDiagnostics?: pulumi.Input; /** * Specifies the ID of the Capacity Reservation Group which the Virtual Machine Scale Set should be allocated to. Changing this forces a new resource to be created. * * > **Note:** `capacityReservationGroupId` cannot be used with `proximityPlacementGroupId` * * > **Note:** `singlePlacementGroup` must be set to `false` when `capacityReservationGroupId` is specified. */ capacityReservationGroupId?: pulumi.Input; /** * The prefix which should be used for the name of the Virtual Machines in this Scale Set. If unspecified this defaults to the value for the `name` field. If the value of the `name` field is not a valid `computerNamePrefix`, then you must specify `computerNamePrefix`. Changing this forces a new resource to be created. */ computerNamePrefix?: pulumi.Input; /** * The Base64-Encoded Custom Data which should be used for this Virtual Machine Scale Set. * * > **Note:** When Custom Data has been configured, it's not possible to remove it without tainting the Virtual Machine Scale Set, due to a limitation of the Azure API. */ customData?: pulumi.Input; /** * One or more `dataDisk` blocks as defined below. */ dataDisks?: pulumi.Input[]>; /** * Should Virtual Machine Extensions be run on Overprovisioned Virtual Machines in the Scale Set? Defaults to `false`. */ doNotRunExtensionsOnOverprovisionedMachines?: pulumi.Input; /** * Specifies the Edge Zone within the Azure Region where this Windows Virtual Machine Scale Set should exist. Changing this forces a new Windows Virtual Machine Scale Set to be created. */ edgeZone?: pulumi.Input; /** * Are automatic updates enabled for this Virtual Machine? Defaults to `true`. */ enableAutomaticUpdates?: pulumi.Input; /** * Should all of the disks (including the temp disk) attached to this Virtual Machine be encrypted by enabling Encryption at Host? */ encryptionAtHostEnabled?: pulumi.Input; /** * Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created. * * > **Note:** This can only be configured when `priority` is set to `Spot`. */ evictionPolicy?: pulumi.Input; /** * Should extension operations be allowed on the Virtual Machine Scale Set? Possible values are `true` or `false`. Defaults to `true`. Changing this forces a new Windows Virtual Machine Scale Set to be created. * * > **Note:** `extensionOperationsEnabled` may only be set to `false` if there are no extensions defined in the `extension` field. */ extensionOperationsEnabled?: pulumi.Input; /** * One or more `extension` blocks as defined below */ extensions?: pulumi.Input[]>; /** * Specifies the duration allocated for all extensions to start. The time duration should be between `15` minutes and `120` minutes (inclusive) and should be specified in ISO 8601 format. Defaults to `PT1H30M`. */ extensionsTimeBudget?: pulumi.Input; /** * One or more `galleryApplication` blocks as defined below. */ galleryApplications?: pulumi.Input[]>; /** * The ID of a Load Balancer Probe which should be used to determine the health of an instance. This is Required and can only be specified when `upgradeMode` is set to `Automatic` or `Rolling`. */ healthProbeId?: pulumi.Input; /** * Specifies the ID of the dedicated host group that the virtual machine scale set resides in. Changing this forces a new resource to be created. */ hostGroupId?: pulumi.Input; /** * An `identity` block as defined below. */ identity?: pulumi.Input; /** * The number of Virtual Machines in the Scale Set. * * > **NOTE:** If you're using AutoScaling, you may wish to use [`Ignore Changes` functionality](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to ignore changes to this field. */ instances: pulumi.Input; /** * Specifies the type of on-premise license (also known as [Azure Hybrid Use Benefit](https://docs.microsoft.com/en-gb/windows-server/get-started/azure-hybrid-benefit)) which should be used for this Virtual Machine Scale Set. Possible values are `None`, `Windows_Client` and `Windows_Server`. */ licenseType?: pulumi.Input; /** * The Azure location where the Windows Virtual Machine Scale Set should exist. Changing this forces a new resource to be created. */ location?: pulumi.Input; /** * The maximum price you're willing to pay for each Virtual Machine in this Scale Set, in US Dollars; which must be greater than the current spot price. If this bid price falls below the current spot price the Virtual Machines in the Scale Set will be evicted using the `evictionPolicy`. Defaults to `-1`, which means that each Virtual Machine in the Scale Set should not be evicted for price reasons. * * > **Note:** This can only be configured when `priority` is set to `Spot`. */ maxBidPrice?: pulumi.Input; /** * The name of the Windows Virtual Machine Scale Set. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * One or more `networkInterface` blocks as defined below. */ networkInterfaces: pulumi.Input[]>; /** * An `osDisk` block as defined below. */ osDisk: pulumi.Input; /** * Should Azure over-provision Virtual Machines in this Scale Set? This means that multiple Virtual Machines will be provisioned and Azure will keep the instances which become available first - which improves provisioning success rates and improves deployment time. You're not billed for these over-provisioned VM's and they don't count towards the Subscription Quota. Defaults to `true`. */ overprovision?: pulumi.Input; /** * A `plan` block as defined below. Changing this forces a new resource to be created. * * > **Note:** When using an image from Azure Marketplace a `plan` must be specified. */ plan?: pulumi.Input; /** * Specifies the number of fault domains that are used by this Linux Virtual Machine Scale Set. Changing this forces a new resource to be created. */ platformFaultDomainCount?: pulumi.Input; /** * The Priority of this Virtual Machine Scale Set. Possible values are `Regular` and `Spot`. Defaults to `Regular`. Changing this value forces a new resource. * * > **Note:** When `priority` is set to `Spot` an `evictionPolicy` must be specified. */ priority?: pulumi.Input; /** * Should the Azure VM Agent be provisioned on each Virtual Machine in the Scale Set? Defaults to `true`. Changing this value forces a new resource to be created. */ provisionVmAgent?: pulumi.Input; /** * The ID of the Proximity Placement Group in which the Virtual Machine Scale Set should be assigned to. Changing this forces a new resource to be created. */ proximityPlacementGroupId?: pulumi.Input; /** * Should resilient VM creation be enabled? When enabled, the service will attempt to create VMs in alternative fault domains or zones if the primary location fails during creation. Defaults to `false`. * * > **Note:** `resilientVmCreationEnabled` is currently not supported in the `austriaeast`, `belgiumcentral`, `centraluseuap`, `chilecentral`, `indonesiacentral`, `israelnorthwest`, `malaysiawest`, `mexicocentral`, `newzealandnorth`, `southcentralus2`, `southindia`, `southeastus3`, `southwestus`, `eastasia`, `eastus`, `southcentralus`, `southeastasia`, and `westeurope` regions. */ resilientVmCreationEnabled?: pulumi.Input; /** * Should resilient VM deletion be enabled? When enabled, the service will use a more resilient deletion process that attempts to gracefully handle failures during VM termination. Defaults to `false`. * * > **Note:** `resilientVmDeletionEnabled` is currently not supported in the `austriaeast`, `belgiumcentral`, `centraluseuap`, `chilecentral`, `indonesiacentral`, `israelnorthwest`, `malaysiawest`, `mexicocentral`, `newzealandnorth`, `southcentralus2`, `southindia`, `southeastus3`, `southwestus`, `eastasia`, `eastus`, `southcentralus`, `southeastasia`, and `westeurope` regions. */ resilientVmDeletionEnabled?: pulumi.Input; /** * The name of the Resource Group in which the Windows Virtual Machine Scale Set should be exist. Changing this forces a new resource to be created. */ resourceGroupName: pulumi.Input; /** * A `rollingUpgradePolicy` block as defined below. This is Required and can only be specified when `upgradeMode` is set to `Automatic` or `Rolling`. Changing this forces a new resource to be created. */ rollingUpgradePolicy?: pulumi.Input; /** * A `scaleIn` block as defined below. */ scaleIn?: pulumi.Input; /** * One or more `secret` blocks as defined below. */ secrets?: pulumi.Input[]>; /** * Specifies if Secure Boot and Trusted Launch is enabled for the Virtual Machine. Changing this forces a new resource to be created. */ secureBootEnabled?: pulumi.Input; /** * Should this Virtual Machine Scale Set be limited to a Single Placement Group, which means the number of instances will be capped at 100 Virtual Machines. Defaults to `true`. */ singlePlacementGroup?: pulumi.Input; /** * The Virtual Machine SKU for the Scale Set, such as `Standard_F2`. */ sku: pulumi.Input; /** * The ID of an Image which each Virtual Machine in this Scale Set should be based on. Possible Image ID types include `Image ID`, `Shared Image ID`, `Shared Image Version ID`, `Community Gallery Image ID`, `Community Gallery Image Version ID`, `Shared Gallery Image ID` and `Shared Gallery Image Version ID`. * * > **Note:** One of either `sourceImageId` or `sourceImageReference` must be set. */ sourceImageId?: pulumi.Input; /** * A `sourceImageReference` block as defined below. * * > **Note:** One of either `sourceImageId` or `sourceImageReference` must be set. */ sourceImageReference?: pulumi.Input; /** * A `spotRestore` block as defined below. */ spotRestore?: pulumi.Input; /** * A mapping of tags which should be assigned to this Virtual Machine Scale Set. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * A `terminationNotification` block as defined below. */ terminationNotification?: pulumi.Input; /** * Specifies the time zone of the virtual machine, [the possible values are defined here](https://jackstromberg.com/2017/01/list-of-time-zones-consumed-by-azure/). */ timezone?: pulumi.Input; /** * Specifies how Upgrades (e.g. changing the Image/SKU) should be performed to Virtual Machine Instances. Possible values are `Automatic`, `Manual` and `Rolling`. Defaults to `Manual`. Changing this forces a new resource to be created. * * > **Note:** If rolling upgrades are configured and running on a Linux Virtual Machine Scale Set, they will be cancelled when Terraform tries to destroy the resource. */ upgradeMode?: pulumi.Input; /** * The Base64-Encoded User Data which should be used for this Virtual Machine Scale Set. */ userData?: pulumi.Input; /** * Specifies if vTPM (Virtual Trusted Platform Module) and Trusted Launch is enabled for the Virtual Machine. Changing this forces a new resource to be created. */ vtpmEnabled?: pulumi.Input; /** * One or more `winrmListener` blocks as defined below. Changing this forces a new resource to be created. */ winrmListeners?: pulumi.Input[]>; /** * Should the Virtual Machines in this Scale Set be strictly evenly distributed across Availability Zones? Defaults to `false`. Changing this forces a new resource to be created. * * > **Note:** This can only be set to `true` when one or more `zones` are configured. */ zoneBalance?: pulumi.Input; /** * Specifies a list of Availability Zones in which this Windows Virtual Machine Scale Set should be located. * * > **Note:** Updating `zones` to remove an existing zone forces a new Virtual Machine Scale Set to be created. */ zones?: pulumi.Input[]>; }