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

com.pulumi.azure.appservice.kotlin.EnvironmentV3Args.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 6.15.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.appservice.kotlin

import com.pulumi.azure.appservice.EnvironmentV3Args.builder
import com.pulumi.azure.appservice.kotlin.inputs.EnvironmentV3ClusterSettingArgs
import com.pulumi.azure.appservice.kotlin.inputs.EnvironmentV3ClusterSettingArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Manages a 3rd Generation (v3) App Service Environment.
 * ## Example Usage
 * This example provisions an App Service Environment V3. Additional examples of how to use the `azure.appservice.EnvironmentV3` resource can be found in the `./examples/app-service-environment-v3` directory within the GitHub Repository.
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "exampleRG1",
 *     location: "West Europe",
 * });
 * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
 *     name: "example-vnet",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     addressSpaces: ["10.0.0.0/16"],
 * });
 * const exampleSubnet = new azure.network.Subnet("example", {
 *     name: "example-subnet",
 *     resourceGroupName: example.name,
 *     virtualNetworkName: exampleVirtualNetwork.name,
 *     addressPrefixes: ["10.0.2.0/24"],
 *     delegations: [{
 *         name: "Microsoft.Web.hostingEnvironments",
 *         serviceDelegation: {
 *             name: "Microsoft.Web/hostingEnvironments",
 *             actions: ["Microsoft.Network/virtualNetworks/subnets/action"],
 *         },
 *     }],
 * });
 * const exampleEnvironmentV3 = new azure.appservice.EnvironmentV3("example", {
 *     name: "example-asev3",
 *     resourceGroupName: example.name,
 *     subnetId: exampleSubnet.id,
 *     internalLoadBalancingMode: "Web, Publishing",
 *     clusterSettings: [
 *         {
 *             name: "DisableTls1.0",
 *             value: "1",
 *         },
 *         {
 *             name: "InternalEncryption",
 *             value: "true",
 *         },
 *         {
 *             name: "FrontEndSSLCipherSuiteOrder",
 *             value: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
 *         },
 *     ],
 *     tags: {
 *         env: "production",
 *         terraformed: "true",
 *     },
 * });
 * const exampleServicePlan = new azure.appservice.ServicePlan("example", {
 *     name: "example",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     osType: "Linux",
 *     skuName: "I1v2",
 *     appServiceEnvironmentId: exampleEnvironmentV3.id,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * example = azure.core.ResourceGroup("example",
 *     name="exampleRG1",
 *     location="West Europe")
 * example_virtual_network = azure.network.VirtualNetwork("example",
 *     name="example-vnet",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     address_spaces=["10.0.0.0/16"])
 * example_subnet = azure.network.Subnet("example",
 *     name="example-subnet",
 *     resource_group_name=example.name,
 *     virtual_network_name=example_virtual_network.name,
 *     address_prefixes=["10.0.2.0/24"],
 *     delegations=[{
 *         "name": "Microsoft.Web.hostingEnvironments",
 *         "service_delegation": {
 *             "name": "Microsoft.Web/hostingEnvironments",
 *             "actions": ["Microsoft.Network/virtualNetworks/subnets/action"],
 *         },
 *     }])
 * example_environment_v3 = azure.appservice.EnvironmentV3("example",
 *     name="example-asev3",
 *     resource_group_name=example.name,
 *     subnet_id=example_subnet.id,
 *     internal_load_balancing_mode="Web, Publishing",
 *     cluster_settings=[
 *         {
 *             "name": "DisableTls1.0",
 *             "value": "1",
 *         },
 *         {
 *             "name": "InternalEncryption",
 *             "value": "true",
 *         },
 *         {
 *             "name": "FrontEndSSLCipherSuiteOrder",
 *             "value": "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
 *         },
 *     ],
 *     tags={
 *         "env": "production",
 *         "terraformed": "true",
 *     })
 * example_service_plan = azure.appservice.ServicePlan("example",
 *     name="example",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     os_type="Linux",
 *     sku_name="I1v2",
 *     app_service_environment_id=example_environment_v3.id)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Azure.Core.ResourceGroup("example", new()
 *     {
 *         Name = "exampleRG1",
 *         Location = "West Europe",
 *     });
 *     var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
 *     {
 *         Name = "example-vnet",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         AddressSpaces = new[]
 *         {
 *             "10.0.0.0/16",
 *         },
 *     });
 *     var exampleSubnet = new Azure.Network.Subnet("example", new()
 *     {
 *         Name = "example-subnet",
 *         ResourceGroupName = example.Name,
 *         VirtualNetworkName = exampleVirtualNetwork.Name,
 *         AddressPrefixes = new[]
 *         {
 *             "10.0.2.0/24",
 *         },
 *         Delegations = new[]
 *         {
 *             new Azure.Network.Inputs.SubnetDelegationArgs
 *             {
 *                 Name = "Microsoft.Web.hostingEnvironments",
 *                 ServiceDelegation = new Azure.Network.Inputs.SubnetDelegationServiceDelegationArgs
 *                 {
 *                     Name = "Microsoft.Web/hostingEnvironments",
 *                     Actions = new[]
 *                     {
 *                         "Microsoft.Network/virtualNetworks/subnets/action",
 *                     },
 *                 },
 *             },
 *         },
 *     });
 *     var exampleEnvironmentV3 = new Azure.AppService.EnvironmentV3("example", new()
 *     {
 *         Name = "example-asev3",
 *         ResourceGroupName = example.Name,
 *         SubnetId = exampleSubnet.Id,
 *         InternalLoadBalancingMode = "Web, Publishing",
 *         ClusterSettings = new[]
 *         {
 *             new Azure.AppService.Inputs.EnvironmentV3ClusterSettingArgs
 *             {
 *                 Name = "DisableTls1.0",
 *                 Value = "1",
 *             },
 *             new Azure.AppService.Inputs.EnvironmentV3ClusterSettingArgs
 *             {
 *                 Name = "InternalEncryption",
 *                 Value = "true",
 *             },
 *             new Azure.AppService.Inputs.EnvironmentV3ClusterSettingArgs
 *             {
 *                 Name = "FrontEndSSLCipherSuiteOrder",
 *                 Value = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
 *             },
 *         },
 *         Tags =
 *         {
 *             { "env", "production" },
 *             { "terraformed", "true" },
 *         },
 *     });
 *     var exampleServicePlan = new Azure.AppService.ServicePlan("example", new()
 *     {
 *         Name = "example",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         OsType = "Linux",
 *         SkuName = "I1v2",
 *         AppServiceEnvironmentId = exampleEnvironmentV3.Id,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/appservice"
 * 	"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 {
 * 		example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
 * 			Name:     pulumi.String("exampleRG1"),
 * 			Location: pulumi.String("West Europe"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
 * 			Name:              pulumi.String("example-vnet"),
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 			AddressSpaces: pulumi.StringArray{
 * 				pulumi.String("10.0.0.0/16"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleSubnet, err := network.NewSubnet(ctx, "example", &network.SubnetArgs{
 * 			Name:               pulumi.String("example-subnet"),
 * 			ResourceGroupName:  example.Name,
 * 			VirtualNetworkName: exampleVirtualNetwork.Name,
 * 			AddressPrefixes: pulumi.StringArray{
 * 				pulumi.String("10.0.2.0/24"),
 * 			},
 * 			Delegations: network.SubnetDelegationArray{
 * 				&network.SubnetDelegationArgs{
 * 					Name: pulumi.String("Microsoft.Web.hostingEnvironments"),
 * 					ServiceDelegation: &network.SubnetDelegationServiceDelegationArgs{
 * 						Name: pulumi.String("Microsoft.Web/hostingEnvironments"),
 * 						Actions: pulumi.StringArray{
 * 							pulumi.String("Microsoft.Network/virtualNetworks/subnets/action"),
 * 						},
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleEnvironmentV3, err := appservice.NewEnvironmentV3(ctx, "example", &appservice.EnvironmentV3Args{
 * 			Name:                      pulumi.String("example-asev3"),
 * 			ResourceGroupName:         example.Name,
 * 			SubnetId:                  exampleSubnet.ID(),
 * 			InternalLoadBalancingMode: pulumi.String("Web, Publishing"),
 * 			ClusterSettings: appservice.EnvironmentV3ClusterSettingArray{
 * 				&appservice.EnvironmentV3ClusterSettingArgs{
 * 					Name:  pulumi.String("DisableTls1.0"),
 * 					Value: pulumi.String("1"),
 * 				},
 * 				&appservice.EnvironmentV3ClusterSettingArgs{
 * 					Name:  pulumi.String("InternalEncryption"),
 * 					Value: pulumi.String("true"),
 * 				},
 * 				&appservice.EnvironmentV3ClusterSettingArgs{
 * 					Name:  pulumi.String("FrontEndSSLCipherSuiteOrder"),
 * 					Value: pulumi.String("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"),
 * 				},
 * 			},
 * 			Tags: pulumi.StringMap{
 * 				"env":         pulumi.String("production"),
 * 				"terraformed": pulumi.String("true"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = appservice.NewServicePlan(ctx, "example", &appservice.ServicePlanArgs{
 * 			Name:                    pulumi.String("example"),
 * 			ResourceGroupName:       example.Name,
 * 			Location:                example.Location,
 * 			OsType:                  pulumi.String("Linux"),
 * 			SkuName:                 pulumi.String("I1v2"),
 * 			AppServiceEnvironmentId: exampleEnvironmentV3.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.network.inputs.SubnetDelegationArgs;
 * import com.pulumi.azure.network.inputs.SubnetDelegationServiceDelegationArgs;
 * import com.pulumi.azure.appservice.EnvironmentV3;
 * import com.pulumi.azure.appservice.EnvironmentV3Args;
 * import com.pulumi.azure.appservice.inputs.EnvironmentV3ClusterSettingArgs;
 * import com.pulumi.azure.appservice.ServicePlan;
 * import com.pulumi.azure.appservice.ServicePlanArgs;
 * 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) {
 *         var example = new ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("exampleRG1")
 *             .location("West Europe")
 *             .build());
 *         var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
 *             .name("example-vnet")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .addressSpaces("10.0.0.0/16")
 *             .build());
 *         var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
 *             .name("example-subnet")
 *             .resourceGroupName(example.name())
 *             .virtualNetworkName(exampleVirtualNetwork.name())
 *             .addressPrefixes("10.0.2.0/24")
 *             .delegations(SubnetDelegationArgs.builder()
 *                 .name("Microsoft.Web.hostingEnvironments")
 *                 .serviceDelegation(SubnetDelegationServiceDelegationArgs.builder()
 *                     .name("Microsoft.Web/hostingEnvironments")
 *                     .actions("Microsoft.Network/virtualNetworks/subnets/action")
 *                     .build())
 *                 .build())
 *             .build());
 *         var exampleEnvironmentV3 = new EnvironmentV3("exampleEnvironmentV3", EnvironmentV3Args.builder()
 *             .name("example-asev3")
 *             .resourceGroupName(example.name())
 *             .subnetId(exampleSubnet.id())
 *             .internalLoadBalancingMode("Web, Publishing")
 *             .clusterSettings(
 *                 EnvironmentV3ClusterSettingArgs.builder()
 *                     .name("DisableTls1.0")
 *                     .value("1")
 *                     .build(),
 *                 EnvironmentV3ClusterSettingArgs.builder()
 *                     .name("InternalEncryption")
 *                     .value("true")
 *                     .build(),
 *                 EnvironmentV3ClusterSettingArgs.builder()
 *                     .name("FrontEndSSLCipherSuiteOrder")
 *                     .value("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256")
 *                     .build())
 *             .tags(Map.ofEntries(
 *                 Map.entry("env", "production"),
 *                 Map.entry("terraformed", "true")
 *             ))
 *             .build());
 *         var exampleServicePlan = new ServicePlan("exampleServicePlan", ServicePlanArgs.builder()
 *             .name("example")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .osType("Linux")
 *             .skuName("I1v2")
 *             .appServiceEnvironmentId(exampleEnvironmentV3.id())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: exampleRG1
 *       location: West Europe
 *   exampleVirtualNetwork:
 *     type: azure:network:VirtualNetwork
 *     name: example
 *     properties:
 *       name: example-vnet
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       addressSpaces:
 *         - 10.0.0.0/16
 *   exampleSubnet:
 *     type: azure:network:Subnet
 *     name: example
 *     properties:
 *       name: example-subnet
 *       resourceGroupName: ${example.name}
 *       virtualNetworkName: ${exampleVirtualNetwork.name}
 *       addressPrefixes:
 *         - 10.0.2.0/24
 *       delegations:
 *         - name: Microsoft.Web.hostingEnvironments
 *           serviceDelegation:
 *             name: Microsoft.Web/hostingEnvironments
 *             actions:
 *               - Microsoft.Network/virtualNetworks/subnets/action
 *   exampleEnvironmentV3:
 *     type: azure:appservice:EnvironmentV3
 *     name: example
 *     properties:
 *       name: example-asev3
 *       resourceGroupName: ${example.name}
 *       subnetId: ${exampleSubnet.id}
 *       internalLoadBalancingMode: Web, Publishing
 *       clusterSettings:
 *         - name: DisableTls1.0
 *           value: '1'
 *         - name: InternalEncryption
 *           value: 'true'
 *         - name: FrontEndSSLCipherSuiteOrder
 *           value: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
 *       tags:
 *         env: production
 *         terraformed: 'true'
 *   exampleServicePlan:
 *     type: azure:appservice:ServicePlan
 *     name: example
 *     properties:
 *       name: example
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       osType: Linux
 *       skuName: I1v2
 *       appServiceEnvironmentId: ${exampleEnvironmentV3.id}
 * ```
 * 
 * ## Import
 * A 3rd Generation (v3) App Service Environment can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:appservice/environmentV3:EnvironmentV3 myAppServiceEnv /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Web/hostingEnvironments/myAppServiceEnv
 * ```
 * @property allowNewPrivateEndpointConnections Should new Private Endpoint Connections be allowed. Defaults to `true`.
 * @property clusterSettings Zero or more `cluster_setting` blocks as defined below.
 * @property dedicatedHostCount This ASEv3 should use dedicated Hosts. Possible values are `2`. Changing this forces a new resource to be created.
 * @property internalLoadBalancingMode Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values are `None` (for an External VIP Type), and `"Web, Publishing"` (for an Internal VIP Type). Defaults to `None`. Changing this forces a new resource to be created.
 * @property name The name of the App Service Environment. Changing this forces a new resource to be created.
 * @property remoteDebuggingEnabled Whether to enable remote debug. Defaults to `false`.
 * @property resourceGroupName The name of the Resource Group where the App Service Environment exists. Defaults to the Resource Group of the Subnet (specified by `subnet_id`). Changing this forces a new resource to be created.
 * @property subnetId The ID of the Subnet which the App Service Environment should be connected to. Changing this forces a new resource to be created.
 * > **NOTE** a /24 or larger CIDR is required. Once associated with an ASE, this size cannot be changed.
 * > **NOTE:** This Subnet requires a delegation to `Microsoft.Web/hostingEnvironments` as detailed in the example above.
 * @property tags
 * @property zoneRedundant Set to `true` to deploy the ASEv3 with availability zones supported. Zonal ASEs can be deployed in some regions, you can refer to [Availability Zone support for App Service Environments](https://docs.microsoft.com/azure/app-service/environment/zone-redundancy). You can only set either `dedicated_host_count` or `zone_redundant` but not both. Changing this forces a new resource to be created.
 * > **NOTE:** Setting this value will provision 2 Physical Hosts for your App Service Environment V3, this is done at additional cost, please be aware of the pricing commitment in the [General Availability Notes](https://techcommunity.microsoft.com/t5/apps-on-azure/announcing-app-service-environment-v3-ga/ba-p/2517990)
 */
public data class EnvironmentV3Args(
    public val allowNewPrivateEndpointConnections: Output? = null,
    public val clusterSettings: Output>? = null,
    public val dedicatedHostCount: Output? = null,
    public val internalLoadBalancingMode: Output? = null,
    public val name: Output? = null,
    public val remoteDebuggingEnabled: Output? = null,
    public val resourceGroupName: Output? = null,
    public val subnetId: Output? = null,
    public val tags: Output>? = null,
    public val zoneRedundant: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.appservice.EnvironmentV3Args =
        com.pulumi.azure.appservice.EnvironmentV3Args.builder()
            .allowNewPrivateEndpointConnections(
                allowNewPrivateEndpointConnections?.applyValue({ args0 ->
                    args0
                }),
            )
            .clusterSettings(
                clusterSettings?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .dedicatedHostCount(dedicatedHostCount?.applyValue({ args0 -> args0 }))
            .internalLoadBalancingMode(internalLoadBalancingMode?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .remoteDebuggingEnabled(remoteDebuggingEnabled?.applyValue({ args0 -> args0 }))
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .subnetId(subnetId?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .zoneRedundant(zoneRedundant?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [EnvironmentV3Args].
 */
@PulumiTagMarker
public class EnvironmentV3ArgsBuilder internal constructor() {
    private var allowNewPrivateEndpointConnections: Output? = null

    private var clusterSettings: Output>? = null

    private var dedicatedHostCount: Output? = null

    private var internalLoadBalancingMode: Output? = null

    private var name: Output? = null

    private var remoteDebuggingEnabled: Output? = null

    private var resourceGroupName: Output? = null

    private var subnetId: Output? = null

    private var tags: Output>? = null

    private var zoneRedundant: Output? = null

    /**
     * @param value Should new Private Endpoint Connections be allowed. Defaults to `true`.
     */
    @JvmName("cvgvjogwtshltqni")
    public suspend fun allowNewPrivateEndpointConnections(`value`: Output) {
        this.allowNewPrivateEndpointConnections = value
    }

    /**
     * @param value Zero or more `cluster_setting` blocks as defined below.
     */
    @JvmName("ivegcxmuvegjikrf")
    public suspend fun clusterSettings(`value`: Output>) {
        this.clusterSettings = value
    }

    @JvmName("llosbwjiwiabmdtb")
    public suspend fun clusterSettings(vararg values: Output) {
        this.clusterSettings = Output.all(values.asList())
    }

    /**
     * @param values Zero or more `cluster_setting` blocks as defined below.
     */
    @JvmName("sdupcyccascprtse")
    public suspend fun clusterSettings(values: List>) {
        this.clusterSettings = Output.all(values)
    }

    /**
     * @param value This ASEv3 should use dedicated Hosts. Possible values are `2`. Changing this forces a new resource to be created.
     */
    @JvmName("fhmyosoyqkxrgtri")
    public suspend fun dedicatedHostCount(`value`: Output) {
        this.dedicatedHostCount = value
    }

    /**
     * @param value Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values are `None` (for an External VIP Type), and `"Web, Publishing"` (for an Internal VIP Type). Defaults to `None`. Changing this forces a new resource to be created.
     */
    @JvmName("hidymqssvoiwompq")
    public suspend fun internalLoadBalancingMode(`value`: Output) {
        this.internalLoadBalancingMode = value
    }

    /**
     * @param value The name of the App Service Environment. Changing this forces a new resource to be created.
     */
    @JvmName("yfcqdgcqkxdbmhlp")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Whether to enable remote debug. Defaults to `false`.
     */
    @JvmName("yjxtgmaalpivapro")
    public suspend fun remoteDebuggingEnabled(`value`: Output) {
        this.remoteDebuggingEnabled = value
    }

    /**
     * @param value The name of the Resource Group where the App Service Environment exists. Defaults to the Resource Group of the Subnet (specified by `subnet_id`). Changing this forces a new resource to be created.
     */
    @JvmName("xyryrunavntkyvxq")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value The ID of the Subnet which the App Service Environment should be connected to. Changing this forces a new resource to be created.
     * > **NOTE** a /24 or larger CIDR is required. Once associated with an ASE, this size cannot be changed.
     * > **NOTE:** This Subnet requires a delegation to `Microsoft.Web/hostingEnvironments` as detailed in the example above.
     */
    @JvmName("csnrynrtnsvsqltw")
    public suspend fun subnetId(`value`: Output) {
        this.subnetId = value
    }

    /**
     * @param value
     */
    @JvmName("eebcjvosdaffqvbv")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value Set to `true` to deploy the ASEv3 with availability zones supported. Zonal ASEs can be deployed in some regions, you can refer to [Availability Zone support for App Service Environments](https://docs.microsoft.com/azure/app-service/environment/zone-redundancy). You can only set either `dedicated_host_count` or `zone_redundant` but not both. Changing this forces a new resource to be created.
     * > **NOTE:** Setting this value will provision 2 Physical Hosts for your App Service Environment V3, this is done at additional cost, please be aware of the pricing commitment in the [General Availability Notes](https://techcommunity.microsoft.com/t5/apps-on-azure/announcing-app-service-environment-v3-ga/ba-p/2517990)
     */
    @JvmName("jnkptgusqltraofm")
    public suspend fun zoneRedundant(`value`: Output) {
        this.zoneRedundant = value
    }

    /**
     * @param value Should new Private Endpoint Connections be allowed. Defaults to `true`.
     */
    @JvmName("bghttkchwsmublex")
    public suspend fun allowNewPrivateEndpointConnections(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowNewPrivateEndpointConnections = mapped
    }

    /**
     * @param value Zero or more `cluster_setting` blocks as defined below.
     */
    @JvmName("xopbhvteeeyjpjgx")
    public suspend fun clusterSettings(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clusterSettings = mapped
    }

    /**
     * @param argument Zero or more `cluster_setting` blocks as defined below.
     */
    @JvmName("tqlqfvccwwixdqxj")
    public suspend fun clusterSettings(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            EnvironmentV3ClusterSettingArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.clusterSettings = mapped
    }

    /**
     * @param argument Zero or more `cluster_setting` blocks as defined below.
     */
    @JvmName("urwppjvsfydnuisw")
    public suspend fun clusterSettings(vararg argument: suspend EnvironmentV3ClusterSettingArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            EnvironmentV3ClusterSettingArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.clusterSettings = mapped
    }

    /**
     * @param argument Zero or more `cluster_setting` blocks as defined below.
     */
    @JvmName("kbjyvtuydkbfgvrm")
    public suspend fun clusterSettings(argument: suspend EnvironmentV3ClusterSettingArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            EnvironmentV3ClusterSettingArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.clusterSettings = mapped
    }

    /**
     * @param values Zero or more `cluster_setting` blocks as defined below.
     */
    @JvmName("ejuyywkpsfqmlova")
    public suspend fun clusterSettings(vararg values: EnvironmentV3ClusterSettingArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.clusterSettings = mapped
    }

    /**
     * @param value This ASEv3 should use dedicated Hosts. Possible values are `2`. Changing this forces a new resource to be created.
     */
    @JvmName("yxeknqmapgoxykgs")
    public suspend fun dedicatedHostCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dedicatedHostCount = mapped
    }

    /**
     * @param value Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values are `None` (for an External VIP Type), and `"Web, Publishing"` (for an Internal VIP Type). Defaults to `None`. Changing this forces a new resource to be created.
     */
    @JvmName("ietnxvpxclyygxtk")
    public suspend fun internalLoadBalancingMode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.internalLoadBalancingMode = mapped
    }

    /**
     * @param value The name of the App Service Environment. Changing this forces a new resource to be created.
     */
    @JvmName("pstoumvcitkmxmcp")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Whether to enable remote debug. Defaults to `false`.
     */
    @JvmName("gcusfvlartdwgxbt")
    public suspend fun remoteDebuggingEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.remoteDebuggingEnabled = mapped
    }

    /**
     * @param value The name of the Resource Group where the App Service Environment exists. Defaults to the Resource Group of the Subnet (specified by `subnet_id`). Changing this forces a new resource to be created.
     */
    @JvmName("qltivsbxuejbteya")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value The ID of the Subnet which the App Service Environment should be connected to. Changing this forces a new resource to be created.
     * > **NOTE** a /24 or larger CIDR is required. Once associated with an ASE, this size cannot be changed.
     * > **NOTE:** This Subnet requires a delegation to `Microsoft.Web/hostingEnvironments` as detailed in the example above.
     */
    @JvmName("xjkcqivjwwdbclbr")
    public suspend fun subnetId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetId = mapped
    }

    /**
     * @param value
     */
    @JvmName("jdqqusbmxqyamkal")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values
     */
    @JvmName("vcipyibilfsfprfr")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value Set to `true` to deploy the ASEv3 with availability zones supported. Zonal ASEs can be deployed in some regions, you can refer to [Availability Zone support for App Service Environments](https://docs.microsoft.com/azure/app-service/environment/zone-redundancy). You can only set either `dedicated_host_count` or `zone_redundant` but not both. Changing this forces a new resource to be created.
     * > **NOTE:** Setting this value will provision 2 Physical Hosts for your App Service Environment V3, this is done at additional cost, please be aware of the pricing commitment in the [General Availability Notes](https://techcommunity.microsoft.com/t5/apps-on-azure/announcing-app-service-environment-v3-ga/ba-p/2517990)
     */
    @JvmName("cqfbxtdnujdirfwx")
    public suspend fun zoneRedundant(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.zoneRedundant = mapped
    }

    internal fun build(): EnvironmentV3Args = EnvironmentV3Args(
        allowNewPrivateEndpointConnections = allowNewPrivateEndpointConnections,
        clusterSettings = clusterSettings,
        dedicatedHostCount = dedicatedHostCount,
        internalLoadBalancingMode = internalLoadBalancingMode,
        name = name,
        remoteDebuggingEnabled = remoteDebuggingEnabled,
        resourceGroupName = resourceGroupName,
        subnetId = subnetId,
        tags = tags,
        zoneRedundant = zoneRedundant,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy