All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.compute.kotlin.LinuxVirtualMachineScaleSet.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.compute.kotlin

import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAdditionalCapabilities
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAdminSshKey
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAutomaticInstanceRepair
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAutomaticOsUpgradePolicy
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetBootDiagnostics
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetDataDisk
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetExtension
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetGalleryApplication
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetIdentity
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetNetworkInterface
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetOsDisk
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetPlan
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetRollingUpgradePolicy
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetScaleIn
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetSecret
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetSourceImageReference
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetSpotRestore
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetTerminateNotification
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetTerminationNotification
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.Double
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAdditionalCapabilities.Companion.toKotlin as linuxVirtualMachineScaleSetAdditionalCapabilitiesToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAdminSshKey.Companion.toKotlin as linuxVirtualMachineScaleSetAdminSshKeyToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAutomaticInstanceRepair.Companion.toKotlin as linuxVirtualMachineScaleSetAutomaticInstanceRepairToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetAutomaticOsUpgradePolicy.Companion.toKotlin as linuxVirtualMachineScaleSetAutomaticOsUpgradePolicyToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetBootDiagnostics.Companion.toKotlin as linuxVirtualMachineScaleSetBootDiagnosticsToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetDataDisk.Companion.toKotlin as linuxVirtualMachineScaleSetDataDiskToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetExtension.Companion.toKotlin as linuxVirtualMachineScaleSetExtensionToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetGalleryApplication.Companion.toKotlin as linuxVirtualMachineScaleSetGalleryApplicationToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetIdentity.Companion.toKotlin as linuxVirtualMachineScaleSetIdentityToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetNetworkInterface.Companion.toKotlin as linuxVirtualMachineScaleSetNetworkInterfaceToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetOsDisk.Companion.toKotlin as linuxVirtualMachineScaleSetOsDiskToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetPlan.Companion.toKotlin as linuxVirtualMachineScaleSetPlanToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetRollingUpgradePolicy.Companion.toKotlin as linuxVirtualMachineScaleSetRollingUpgradePolicyToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetScaleIn.Companion.toKotlin as linuxVirtualMachineScaleSetScaleInToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetSecret.Companion.toKotlin as linuxVirtualMachineScaleSetSecretToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetSourceImageReference.Companion.toKotlin as linuxVirtualMachineScaleSetSourceImageReferenceToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetSpotRestore.Companion.toKotlin as linuxVirtualMachineScaleSetSpotRestoreToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetTerminateNotification.Companion.toKotlin as linuxVirtualMachineScaleSetTerminateNotificationToKotlin
import com.pulumi.azure.compute.kotlin.outputs.LinuxVirtualMachineScaleSetTerminationNotification.Companion.toKotlin as linuxVirtualMachineScaleSetTerminationNotificationToKotlin

/**
 * Builder for [LinuxVirtualMachineScaleSet].
 */
@PulumiTagMarker
public class LinuxVirtualMachineScaleSetResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: LinuxVirtualMachineScaleSetArgs = LinuxVirtualMachineScaleSetArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend LinuxVirtualMachineScaleSetArgsBuilder.() -> Unit) {
        val builder = LinuxVirtualMachineScaleSetArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): LinuxVirtualMachineScaleSet {
        val builtJavaResource =
            com.pulumi.azure.compute.LinuxVirtualMachineScaleSet(
                this.name,
                this.args.toJava(),
                this.opts.toJava(),
            )
        return LinuxVirtualMachineScaleSet(builtJavaResource)
    }
}

/**
 * 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.
 * rraform 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.
 * ## 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 [email protected]";
 * 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,
 *         }],
 *     }],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * first_public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN [email protected]"
 * example = azure.core.ResourceGroup("example",
 *     name="example-resources",
 *     location="West Europe")
 * example_virtual_network = azure.network.VirtualNetwork("example",
 *     name="example-network",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     address_spaces=["10.0.0.0/16"])
 * internal = azure.network.Subnet("internal",
 *     name="internal",
 *     resource_group_name=example.name,
 *     virtual_network_name=example_virtual_network.name,
 *     address_prefixes=["10.0.2.0/24"])
 * example_linux_virtual_machine_scale_set = azure.compute.LinuxVirtualMachineScaleSet("example",
 *     name="example-vmss",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     sku="Standard_F2",
 *     instances=1,
 *     admin_username="adminuser",
 *     admin_ssh_keys=[{
 *         "username": "adminuser",
 *         "public_key": first_public_key,
 *     }],
 *     source_image_reference={
 *         "publisher": "Canonical",
 *         "offer": "0001-com-ubuntu-server-jammy",
 *         "sku": "22_04-lts",
 *         "version": "latest",
 *     },
 *     os_disk={
 *         "storage_account_type": "Standard_LRS",
 *         "caching": "ReadWrite",
 *     },
 *     network_interfaces=[{
 *         "name": "example",
 *         "primary": True,
 *         "ip_configurations": [{
 *             "name": "internal",
 *             "primary": True,
 *             "subnet_id": internal.id,
 *         }],
 *     }])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var firstPublicKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN [email protected]";
 *     var example = new Azure.Core.ResourceGroup("example", new()
 *     {
 *         Name = "example-resources",
 *         Location = "West Europe",
 *     });
 *     var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
 *     {
 *         Name = "example-network",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         AddressSpaces = new[]
 *         {
 *             "10.0.0.0/16",
 *         },
 *     });
 *     var @internal = new Azure.Network.Subnet("internal", new()
 *     {
 *         Name = "internal",
 *         ResourceGroupName = example.Name,
 *         VirtualNetworkName = exampleVirtualNetwork.Name,
 *         AddressPrefixes = new[]
 *         {
 *             "10.0.2.0/24",
 *         },
 *     });
 *     var exampleLinuxVirtualMachineScaleSet = new Azure.Compute.LinuxVirtualMachineScaleSet("example", new()
 *     {
 *         Name = "example-vmss",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         Sku = "Standard_F2",
 *         Instances = 1,
 *         AdminUsername = "adminuser",
 *         AdminSshKeys = new[]
 *         {
 *             new Azure.Compute.Inputs.LinuxVirtualMachineScaleSetAdminSshKeyArgs
 *             {
 *                 Username = "adminuser",
 *                 PublicKey = firstPublicKey,
 *             },
 *         },
 *         SourceImageReference = new Azure.Compute.Inputs.LinuxVirtualMachineScaleSetSourceImageReferenceArgs
 *         {
 *             Publisher = "Canonical",
 *             Offer = "0001-com-ubuntu-server-jammy",
 *             Sku = "22_04-lts",
 *             Version = "latest",
 *         },
 *         OsDisk = new Azure.Compute.Inputs.LinuxVirtualMachineScaleSetOsDiskArgs
 *         {
 *             StorageAccountType = "Standard_LRS",
 *             Caching = "ReadWrite",
 *         },
 *         NetworkInterfaces = new[]
 *         {
 *             new Azure.Compute.Inputs.LinuxVirtualMachineScaleSetNetworkInterfaceArgs
 *             {
 *                 Name = "example",
 *                 Primary = true,
 *                 IpConfigurations = new[]
 *                 {
 *                     new Azure.Compute.Inputs.LinuxVirtualMachineScaleSetNetworkInterfaceIpConfigurationArgs
 *                     {
 *                         Name = "internal",
 *                         Primary = true,
 *                         SubnetId = @internal.Id,
 *                     },
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/compute"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/network"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		firstPublicKey := "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN [email protected]"
 * 		example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
 * 			Name:     pulumi.String("example-resources"),
 * 			Location: pulumi.String("West Europe"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
 * 			Name:              pulumi.String("example-network"),
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			AddressSpaces: pulumi.StringArray{
 * 				pulumi.String("10.0.0.0/16"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		internal, err := network.NewSubnet(ctx, "internal", &network.SubnetArgs{
 * 			Name:               pulumi.String("internal"),
 * 			ResourceGroupName:  example.Name,
 * 			VirtualNetworkName: exampleVirtualNetwork.Name,
 * 			AddressPrefixes: pulumi.StringArray{
 * 				pulumi.String("10.0.2.0/24"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = compute.NewLinuxVirtualMachineScaleSet(ctx, "example", &compute.LinuxVirtualMachineScaleSetArgs{
 * 			Name:              pulumi.String("example-vmss"),
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			Sku:               pulumi.String("Standard_F2"),
 * 			Instances:         pulumi.Int(1),
 * 			AdminUsername:     pulumi.String("adminuser"),
 * 			AdminSshKeys: compute.LinuxVirtualMachineScaleSetAdminSshKeyArray{
 * 				&compute.LinuxVirtualMachineScaleSetAdminSshKeyArgs{
 * 					Username:  pulumi.String("adminuser"),
 * 					PublicKey: pulumi.String(firstPublicKey),
 * 				},
 * 			},
 * 			SourceImageReference: &compute.LinuxVirtualMachineScaleSetSourceImageReferenceArgs{
 * 				Publisher: pulumi.String("Canonical"),
 * 				Offer:     pulumi.String("0001-com-ubuntu-server-jammy"),
 * 				Sku:       pulumi.String("22_04-lts"),
 * 				Version:   pulumi.String("latest"),
 * 			},
 * 			OsDisk: &compute.LinuxVirtualMachineScaleSetOsDiskArgs{
 * 				StorageAccountType: pulumi.String("Standard_LRS"),
 * 				Caching:            pulumi.String("ReadWrite"),
 * 			},
 * 			NetworkInterfaces: compute.LinuxVirtualMachineScaleSetNetworkInterfaceArray{
 * 				&compute.LinuxVirtualMachineScaleSetNetworkInterfaceArgs{
 * 					Name:    pulumi.String("example"),
 * 					Primary: pulumi.Bool(true),
 * 					IpConfigurations: compute.LinuxVirtualMachineScaleSetNetworkInterfaceIpConfigurationArray{
 * 						&compute.LinuxVirtualMachineScaleSetNetworkInterfaceIpConfigurationArgs{
 * 							Name:     pulumi.String("internal"),
 * 							Primary:  pulumi.Bool(true),
 * 							SubnetId: internal.ID(),
 * 						},
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azure.core.ResourceGroup;
 * import com.pulumi.azure.core.ResourceGroupArgs;
 * import com.pulumi.azure.network.VirtualNetwork;
 * import com.pulumi.azure.network.VirtualNetworkArgs;
 * import com.pulumi.azure.network.Subnet;
 * import com.pulumi.azure.network.SubnetArgs;
 * import com.pulumi.azure.compute.LinuxVirtualMachineScaleSet;
 * import com.pulumi.azure.compute.LinuxVirtualMachineScaleSetArgs;
 * import com.pulumi.azure.compute.inputs.LinuxVirtualMachineScaleSetAdminSshKeyArgs;
 * import com.pulumi.azure.compute.inputs.LinuxVirtualMachineScaleSetSourceImageReferenceArgs;
 * import com.pulumi.azure.compute.inputs.LinuxVirtualMachineScaleSetOsDiskArgs;
 * import com.pulumi.azure.compute.inputs.LinuxVirtualMachineScaleSetNetworkInterfaceArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         final var firstPublicKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN [email protected]";
 *         var example = new ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("example-resources")
 *             .location("West Europe")
 *             .build());
 *         var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
 *             .name("example-network")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .addressSpaces("10.0.0.0/16")
 *             .build());
 *         var internal = new Subnet("internal", SubnetArgs.builder()
 *             .name("internal")
 *             .resourceGroupName(example.name())
 *             .virtualNetworkName(exampleVirtualNetwork.name())
 *             .addressPrefixes("10.0.2.0/24")
 *             .build());
 *         var exampleLinuxVirtualMachineScaleSet = new LinuxVirtualMachineScaleSet("exampleLinuxVirtualMachineScaleSet", LinuxVirtualMachineScaleSetArgs.builder()
 *             .name("example-vmss")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .sku("Standard_F2")
 *             .instances(1)
 *             .adminUsername("adminuser")
 *             .adminSshKeys(LinuxVirtualMachineScaleSetAdminSshKeyArgs.builder()
 *                 .username("adminuser")
 *                 .publicKey(firstPublicKey)
 *                 .build())
 *             .sourceImageReference(LinuxVirtualMachineScaleSetSourceImageReferenceArgs.builder()
 *                 .publisher("Canonical")
 *                 .offer("0001-com-ubuntu-server-jammy")
 *                 .sku("22_04-lts")
 *                 .version("latest")
 *                 .build())
 *             .osDisk(LinuxVirtualMachineScaleSetOsDiskArgs.builder()
 *                 .storageAccountType("Standard_LRS")
 *                 .caching("ReadWrite")
 *                 .build())
 *             .networkInterfaces(LinuxVirtualMachineScaleSetNetworkInterfaceArgs.builder()
 *                 .name("example")
 *                 .primary(true)
 *                 .ipConfigurations(LinuxVirtualMachineScaleSetNetworkInterfaceIpConfigurationArgs.builder()
 *                     .name("internal")
 *                     .primary(true)
 *                     .subnetId(internal.id())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-resources
 *       location: West Europe
 *   exampleVirtualNetwork:
 *     type: azure:network:VirtualNetwork
 *     name: example
 *     properties:
 *       name: example-network
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       addressSpaces:
 *         - 10.0.0.0/16
 *   internal:
 *     type: azure:network:Subnet
 *     properties:
 *       name: internal
 *       resourceGroupName: ${example.name}
 *       virtualNetworkName: ${exampleVirtualNetwork.name}
 *       addressPrefixes:
 *         - 10.0.2.0/24
 *   exampleLinuxVirtualMachineScaleSet:
 *     type: azure:compute:LinuxVirtualMachineScaleSet
 *     name: example
 *     properties:
 *       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}
 * variables:
 *   firstPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN [email protected]
 * ```
 * 
 * ## 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
 * ```
 */
public class LinuxVirtualMachineScaleSet internal constructor(
    override val javaResource: com.pulumi.azure.compute.LinuxVirtualMachineScaleSet,
) : KotlinCustomResource(javaResource, LinuxVirtualMachineScaleSetMapper) {
    /**
     * An `additional_capabilities` block as defined below.
     */
    public val additionalCapabilities: Output?
        get() = javaResource.additionalCapabilities().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetAdditionalCapabilitiesToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * 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 `admin_password` is specified `disable_password_authentication` must be set to `false`.
     * > **Note:** One of either `admin_password` or `admin_ssh_key` must be specified.
     */
    public val adminPassword: Output?
        get() = javaResource.adminPassword().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * One or more `admin_ssh_key` blocks as defined below.
     * > **Note:** One of either `admin_password` or `admin_ssh_key` must be specified.
     */
    public val adminSshKeys: Output>?
        get() = javaResource.adminSshKeys().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        linuxVirtualMachineScaleSetAdminSshKeyToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * The username of the local administrator on each Virtual Machine Scale Set instance. Changing this forces a new resource to be created.
     */
    public val adminUsername: Output
        get() = javaResource.adminUsername().applyValue({ args0 -> args0 })

    /**
     * An `automatic_instance_repair` block as defined below. To enable the automatic instance repair, this Virtual Machine Scale Set must have a valid `health_probe_id` 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).
     */
    public val automaticInstanceRepair: Output
        get() = javaResource.automaticInstanceRepair().applyValue({ args0 ->
            args0.let({ args0 ->
                linuxVirtualMachineScaleSetAutomaticInstanceRepairToKotlin(args0)
            })
        })

    /**
     * An `automatic_os_upgrade_policy` block as defined below. This can only be specified when `upgrade_mode` is set to either `Automatic` or `Rolling`.
     */
    public val automaticOsUpgradePolicy: Output?
        get() = javaResource.automaticOsUpgradePolicy().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetAutomaticOsUpgradePolicyToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * A `boot_diagnostics` block as defined below.
     */
    public val bootDiagnostics: Output?
        get() = javaResource.bootDiagnostics().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetBootDiagnosticsToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * 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:** `capacity_reservation_group_id` cannot be used with `proximity_placement_group_id`
     * > **Note:** `single_placement_group` must be set to `false` when `capacity_reservation_group_id` is specified.
     */
    public val capacityReservationGroupId: Output?
        get() = javaResource.capacityReservationGroupId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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 `computer_name_prefix`, then you must specify `computer_name_prefix`. Changing this forces a new resource to be created.
     */
    public val computerNamePrefix: Output
        get() = javaResource.computerNamePrefix().applyValue({ args0 -> args0 })

    /**
     * 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.
     */
    public val customData: Output?
        get() = javaResource.customData().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * One or more `data_disk` blocks as defined below.
     */
    public val dataDisks: Output>?
        get() = javaResource.dataDisks().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> linuxVirtualMachineScaleSetDataDiskToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * Should Password Authentication be disabled on this Virtual Machine Scale Set? Defaults to `true`.
     * > 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 `admin_password` is specified `disable_password_authentication` must be set to `false`.
     */
    public val disablePasswordAuthentication: Output?
        get() = javaResource.disablePasswordAuthentication().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * Should Virtual Machine Extensions be run on Overprovisioned Virtual Machines in the Scale Set? Defaults to `false`.
     */
    public val doNotRunExtensionsOnOverprovisionedMachines: Output?
        get() = javaResource.doNotRunExtensionsOnOverprovisionedMachines().applyValue({ args0 ->
            args0.map({ args0 -> args0 }).orElse(null)
        })

    /**
     * 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.
     */
    public val edgeZone: Output?
        get() = javaResource.edgeZone().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * Should all of the disks (including the temp disk) attached to this Virtual Machine be encrypted by enabling Encryption at Host?
     */
    public val encryptionAtHostEnabled: Output?
        get() = javaResource.encryptionAtHostEnabled().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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`.
     */
    public val evictionPolicy: Output?
        get() = javaResource.evictionPolicy().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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:** `extension_operations_enabled` may only be set to `false` if there are no extensions defined in the `extension` field.
     */
    public val extensionOperationsEnabled: Output
        get() = javaResource.extensionOperationsEnabled().applyValue({ args0 -> args0 })

    /**
     * One or more `extension` blocks as defined below
     */
    public val extensions: Output>
        get() = javaResource.extensions().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetExtensionToKotlin(args0)
                })
            })
        })

    /**
     * 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`.
     */
    public val extensionsTimeBudget: Output?
        get() = javaResource.extensionsTimeBudget().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * One or more `gallery_application` blocks as defined below.
     */
    public val galleryApplication: Output>
        get() = javaResource.galleryApplication().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> linuxVirtualMachineScaleSetGalleryApplicationToKotlin(args0) })
            })
        })

    @Deprecated(
        message = """
  `gallery_applications` has been renamed to `gallery_application` and will be deprecated in 4.0
  """,
    )
    public val galleryApplications: Output>
        get() = javaResource.galleryApplications().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> linuxVirtualMachineScaleSetGalleryApplicationToKotlin(args0) })
            })
        })

    /**
     * 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 `upgrade_mode` is set to `Automatic` or `Rolling`.
     */
    public val healthProbeId: Output?
        get() = javaResource.healthProbeId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val hostGroupId: Output?
        get() = javaResource.hostGroupId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * An `identity` block as defined below.
     */
    public val identity: Output?
        get() = javaResource.identity().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetIdentityToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val instances: Output?
        get() = javaResource.instances().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * The Azure location where the Linux Virtual Machine Scale Set should exist. Changing this forces a new resource to be created.
     */
    public val location: Output
        get() = javaResource.location().applyValue({ args0 -> args0 })

    /**
     * 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 `eviction_policy`. 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`.
     */
    public val maxBidPrice: Output?
        get() = javaResource.maxBidPrice().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The name of the Linux Virtual Machine Scale Set. Changing this forces a new resource to be created.
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * One or more `network_interface` blocks as defined below.
     */
    public val networkInterfaces: Output>
        get() = javaResource.networkInterfaces().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> linuxVirtualMachineScaleSetNetworkInterfaceToKotlin(args0) })
            })
        })

    /**
     * An `os_disk` block as defined below.
     */
    public val osDisk: Output
        get() = javaResource.osDisk().applyValue({ args0 ->
            args0.let({ args0 ->
                linuxVirtualMachineScaleSetOsDiskToKotlin(args0)
            })
        })

    /**
     * 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`.
     */
    public val overprovision: Output?
        get() = javaResource.overprovision().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val plan: Output?
        get() = javaResource.plan().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetPlanToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val platformFaultDomainCount: Output
        get() = javaResource.platformFaultDomainCount().applyValue({ args0 -> args0 })

    /**
     * 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 `eviction_policy` must be specified.
     */
    public val priority: Output?
        get() = javaResource.priority().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * 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.
     */
    public val provisionVmAgent: Output?
        get() = javaResource.provisionVmAgent().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val proximityPlacementGroupId: Output?
        get() = javaResource.proximityPlacementGroupId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val resourceGroupName: Output
        get() = javaResource.resourceGroupName().applyValue({ args0 -> args0 })

    /**
     * A `rolling_upgrade_policy` block as defined below. This is Required and can only be specified when `upgrade_mode` is set to `Automatic` or `Rolling`. Changing this forces a new resource to be created.
     */
    public val rollingUpgradePolicy: Output?
        get() = javaResource.rollingUpgradePolicy().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetRollingUpgradePolicyToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * A `scale_in` block as defined below.
     */
    public val scaleIn: Output
        get() = javaResource.scaleIn().applyValue({ args0 ->
            args0.let({ args0 ->
                linuxVirtualMachineScaleSetScaleInToKotlin(args0)
            })
        })

    @Deprecated(
        message = """
  `scale_in_policy` will be removed in favour of the `scale_in` code block in version 4.0 of the
      AzureRM Provider.
  """,
    )
    public val scaleInPolicy: Output
        get() = javaResource.scaleInPolicy().applyValue({ args0 -> args0 })

    /**
     * One or more `secret` blocks as defined below.
     */
    public val secrets: Output>?
        get() = javaResource.secrets().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> linuxVirtualMachineScaleSetSecretToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * Specifies whether secure boot should be enabled on the virtual machine. Changing this forces a new resource to be created.
     */
    public val secureBootEnabled: Output?
        get() = javaResource.secureBootEnabled().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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`.
     */
    public val singlePlacementGroup: Output?
        get() = javaResource.singlePlacementGroup().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The Virtual Machine SKU for the Scale Set, such as `Standard_F2`.
     */
    public val sku: Output
        get() = javaResource.sku().applyValue({ args0 -> args0 })

    /**
     * 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 `source_image_id` or `source_image_reference` must be set.
     */
    public val sourceImageId: Output?
        get() = javaResource.sourceImageId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * A `source_image_reference` block as defined below.
     * > **Note:** One of either `source_image_id` or `source_image_reference` must be set.
     */
    public val sourceImageReference: Output?
        get() = javaResource.sourceImageReference().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    linuxVirtualMachineScaleSetSourceImageReferenceToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * A `spot_restore` block as defined below.
     */
    public val spotRestore: Output
        get() = javaResource.spotRestore().applyValue({ args0 ->
            args0.let({ args0 ->
                linuxVirtualMachineScaleSetSpotRestoreToKotlin(args0)
            })
        })

    /**
     * A mapping of tags which should be assigned to this Virtual Machine Scale Set.
     */
    public val tags: Output>?
        get() = javaResource.tags().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.key.to(args0.value)
                }).toMap()
            }).orElse(null)
        })

    /**
     * A `terminate_notification` block as defined below.
     * > **Note:** This property has been deprecated in favour of the `termination_notification` property and will be removed in version 4.0 of the provider.
     */
    @Deprecated(
        message = """
  `terminate_notification` has been renamed to `termination_notification` and will be removed in
      4.0.
  """,
    )
    public val terminateNotification: Output
        get() = javaResource.terminateNotification().applyValue({ args0 ->
            args0.let({ args0 ->
                linuxVirtualMachineScaleSetTerminateNotificationToKotlin(args0)
            })
        })

    /**
     * A `termination_notification` block as defined below.
     */
    public val terminationNotification: Output
        get() = javaResource.terminationNotification().applyValue({ args0 ->
            args0.let({ args0 ->
                linuxVirtualMachineScaleSetTerminationNotificationToKotlin(args0)
            })
        })

    /**
     * The Unique ID for this Linux Virtual Machine Scale Set.
     */
    public val uniqueId: Output
        get() = javaResource.uniqueId().applyValue({ args0 -> args0 })

    public val upgradeMode: Output?
        get() = javaResource.upgradeMode().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The Base64-Encoded User Data which should be used for this Virtual Machine Scale Set.
     */
    public val userData: Output?
        get() = javaResource.userData().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * Specifies whether vTPM should be enabled on the virtual machine. Changing this forces a new resource to be created.
     */
    public val vtpmEnabled: Output?
        get() = javaResource.vtpmEnabled().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val zoneBalance: Output?
        get() = javaResource.zoneBalance().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * Specifies a list of Availability Zones in which this Linux Virtual Machine Scale Set should be located. Changing this forces a new Linux Virtual Machine Scale Set to be created.
     */
    public val zones: Output>?
        get() = javaResource.zones().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0
                })
            }).orElse(null)
        })
}

public object LinuxVirtualMachineScaleSetMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.azure.compute.LinuxVirtualMachineScaleSet::class == javaResource::class

    override fun map(javaResource: Resource): LinuxVirtualMachineScaleSet =
        LinuxVirtualMachineScaleSet(
            javaResource as
                com.pulumi.azure.compute.LinuxVirtualMachineScaleSet,
        )
}

/**
 * @see [LinuxVirtualMachineScaleSet].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [LinuxVirtualMachineScaleSet].
 */
public suspend fun linuxVirtualMachineScaleSet(
    name: String,
    block: suspend LinuxVirtualMachineScaleSetResourceBuilder.() -> Unit,
): LinuxVirtualMachineScaleSet {
    val builder = LinuxVirtualMachineScaleSetResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [LinuxVirtualMachineScaleSet].
 * @param name The _unique_ name of the resulting resource.
 */
public fun linuxVirtualMachineScaleSet(name: String): LinuxVirtualMachineScaleSet {
    val builder = LinuxVirtualMachineScaleSetResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy