import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a Linux Virtual Machine Scale Set. * * ## Disclaimers * * > **Note:** As of the **v2.86.0** (November 19, 2021) release of the provider 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. * * ## Example Usage * * This example provisions a basic Linux Virtual Machine Scale Set on an internal network. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const firstPublicKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN you@me.com"; * 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 exampleLinuxVirtualMachineScaleSet = new azure.compute.LinuxVirtualMachineScaleSet("example", { * name: "example-vmss", * resourceGroupName: example.name, * location: example.location, * sku: "Standard_F2", * instances: 1, * adminUsername: "adminuser", * adminSshKeys: [{ * username: "adminuser", * publicKey: firstPublicKey, * }], * sourceImageReference: { * publisher: "Canonical", * offer: "0001-com-ubuntu-server-jammy", * sku: "22_04-lts", * 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 * * Linux Virtual Machine Scale Sets can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:compute/linuxVirtualMachineScaleSet:LinuxVirtualMachineScaleSet example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1 * ``` */ export declare class LinuxVirtualMachineScaleSet extends pulumi.CustomResource { /** * Get an existing LinuxVirtualMachineScaleSet 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?: LinuxVirtualMachineScaleSetState, opts?: pulumi.CustomResourceOptions): LinuxVirtualMachineScaleSet; /** * Returns true if the given object is an instance of LinuxVirtualMachineScaleSet. 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 LinuxVirtualMachineScaleSet; /** * An `additionalCapabilities` block as defined below. */ readonly additionalCapabilities: 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. * * > **Note:** When an `adminPassword` is specified `disablePasswordAuthentication` must be set to `false`. * * > **Note:** One of either `adminPassword` or `adminSshKey` must be specified. */ readonly adminPassword: pulumi.Output; /** * One or more `adminSshKey` blocks as defined below. * * > **Note:** One of either `adminPassword` or `adminSshKey` must be specified. */ readonly adminSshKeys: 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 the [product documentation](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 Password Authentication be disabled on this Virtual Machine Scale Set? Defaults to `true`. * * > **Note:** In general we'd recommend using SSH Keys for authentication rather than Passwords - but there's tradeoff's to each - please [see this thread for more information](https://security.stackexchange.com/questions/69407/why-is-using-an-ssh-key-more-secure-than-using-passwords). * * > **Note:** When a `adminPassword` is specified `disablePasswordAuthentication` must be set to `false`. */ readonly disablePasswordAuthentication: 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 Linux Virtual Machine Scale Set should exist. Changing this forces a new Linux Virtual Machine Scale Set to be created. */ readonly edgeZone: 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 Linux 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. Defaults to `0`. * * > **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; /** * The Azure location where the Linux 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 this 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 Linux 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 Linux 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 whether secure boot should be enabled on 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; /** * The Unique ID for this Linux 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 whether vTPM should be enabled on the virtual machine. Changing this forces a new resource to be created. */ readonly vtpmEnabled: 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 Linux 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 LinuxVirtualMachineScaleSet 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: LinuxVirtualMachineScaleSetArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering LinuxVirtualMachineScaleSet resources. */ export interface LinuxVirtualMachineScaleSetState { /** * An `additionalCapabilities` block as defined below. */ additionalCapabilities?: 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. * * > **Note:** When an `adminPassword` is specified `disablePasswordAuthentication` must be set to `false`. * * > **Note:** One of either `adminPassword` or `adminSshKey` must be specified. */ adminPassword?: pulumi.Input; /** * One or more `adminSshKey` blocks as defined below. * * > **Note:** One of either `adminPassword` or `adminSshKey` must be specified. */ adminSshKeys?: 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 the [product documentation](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 Password Authentication be disabled on this Virtual Machine Scale Set? Defaults to `true`. * * > **Note:** In general we'd recommend using SSH Keys for authentication rather than Passwords - but there's tradeoff's to each - please [see this thread for more information](https://security.stackexchange.com/questions/69407/why-is-using-an-ssh-key-more-secure-than-using-passwords). * * > **Note:** When a `adminPassword` is specified `disablePasswordAuthentication` must be set to `false`. */ disablePasswordAuthentication?: 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 Linux Virtual Machine Scale Set should exist. Changing this forces a new Linux Virtual Machine Scale Set to be created. */ edgeZone?: 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 Linux 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. Defaults to `0`. * * > **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; /** * The Azure location where the Linux 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 this 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 Linux 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 Linux 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 whether secure boot should be enabled on 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; /** * The Unique ID for this Linux 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 whether vTPM should be enabled on the virtual machine. Changing this forces a new resource to be created. */ vtpmEnabled?: 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 Linux 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 LinuxVirtualMachineScaleSet resource. */ export interface LinuxVirtualMachineScaleSetArgs { /** * An `additionalCapabilities` block as defined below. */ additionalCapabilities?: 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. * * > **Note:** When an `adminPassword` is specified `disablePasswordAuthentication` must be set to `false`. * * > **Note:** One of either `adminPassword` or `adminSshKey` must be specified. */ adminPassword?: pulumi.Input; /** * One or more `adminSshKey` blocks as defined below. * * > **Note:** One of either `adminPassword` or `adminSshKey` must be specified. */ adminSshKeys?: 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 the [product documentation](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 Password Authentication be disabled on this Virtual Machine Scale Set? Defaults to `true`. * * > **Note:** In general we'd recommend using SSH Keys for authentication rather than Passwords - but there's tradeoff's to each - please [see this thread for more information](https://security.stackexchange.com/questions/69407/why-is-using-an-ssh-key-more-secure-than-using-passwords). * * > **Note:** When a `adminPassword` is specified `disablePasswordAuthentication` must be set to `false`. */ disablePasswordAuthentication?: 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 Linux Virtual Machine Scale Set should exist. Changing this forces a new Linux Virtual Machine Scale Set to be created. */ edgeZone?: 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 Linux 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. Defaults to `0`. * * > **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; /** * The Azure location where the Linux 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 this 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 Linux 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 Linux 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 whether secure boot should be enabled on 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 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 whether vTPM should be enabled on the virtual machine. Changing this forces a new resource to be created. */ vtpmEnabled?: 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 Linux 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[]>; }