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

com.pulumi.azure.machinelearning.kotlin.InferenceClusterArgs.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.machinelearning.kotlin

import com.pulumi.azure.machinelearning.InferenceClusterArgs.builder
import com.pulumi.azure.machinelearning.kotlin.inputs.InferenceClusterIdentityArgs
import com.pulumi.azure.machinelearning.kotlin.inputs.InferenceClusterIdentityArgsBuilder
import com.pulumi.azure.machinelearning.kotlin.inputs.InferenceClusterSslArgs
import com.pulumi.azure.machinelearning.kotlin.inputs.InferenceClusterSslArgsBuilder
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.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Manages a Machine Learning Inference Cluster.
 * > **NOTE:** The Machine Learning Inference Cluster resource is used to attach an existing AKS cluster to the Machine Learning Workspace, it doesn't create the AKS cluster itself. Therefore it can only be created and deleted, not updated. Any change to the configuration will recreate the resource.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const current = azure.core.getClientConfig({});
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-rg",
 *     location: "west europe",
 *     tags: {
 *         stage: "example",
 *     },
 * });
 * const exampleInsights = new azure.appinsights.Insights("example", {
 *     name: "example-ai",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     applicationType: "web",
 * });
 * const exampleKeyVault = new azure.keyvault.KeyVault("example", {
 *     name: "example-kv",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     tenantId: current.then(current => current.tenantId),
 *     skuName: "standard",
 *     purgeProtectionEnabled: true,
 * });
 * const exampleAccount = new azure.storage.Account("example", {
 *     name: "examplesa",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     accountTier: "Standard",
 *     accountReplicationType: "LRS",
 * });
 * const exampleWorkspace = new azure.machinelearning.Workspace("example", {
 *     name: "example-mlw",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     applicationInsightsId: exampleInsights.id,
 *     keyVaultId: exampleKeyVault.id,
 *     storageAccountId: exampleAccount.id,
 *     identity: {
 *         type: "SystemAssigned",
 *     },
 * });
 * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
 *     name: "example-vnet",
 *     addressSpaces: ["10.1.0.0/16"],
 *     location: example.location,
 *     resourceGroupName: example.name,
 * });
 * const exampleSubnet = new azure.network.Subnet("example", {
 *     name: "example-subnet",
 *     resourceGroupName: example.name,
 *     virtualNetworkName: exampleVirtualNetwork.name,
 *     addressPrefixes: ["10.1.0.0/24"],
 * });
 * const exampleKubernetesCluster = new azure.containerservice.KubernetesCluster("example", {
 *     name: "example-aks",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     dnsPrefixPrivateCluster: "prefix",
 *     defaultNodePool: {
 *         name: "default",
 *         nodeCount: 3,
 *         vmSize: "Standard_D3_v2",
 *         vnetSubnetId: exampleSubnet.id,
 *     },
 *     identity: {
 *         type: "SystemAssigned",
 *     },
 * });
 * const exampleInferenceCluster = new azure.machinelearning.InferenceCluster("example", {
 *     name: "example",
 *     location: example.location,
 *     clusterPurpose: "FastProd",
 *     kubernetesClusterId: exampleKubernetesCluster.id,
 *     description: "This is an example cluster used with Terraform",
 *     machineLearningWorkspaceId: exampleWorkspace.id,
 *     tags: {
 *         stage: "example",
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * current = azure.core.get_client_config()
 * example = azure.core.ResourceGroup("example",
 *     name="example-rg",
 *     location="west europe",
 *     tags={
 *         "stage": "example",
 *     })
 * example_insights = azure.appinsights.Insights("example",
 *     name="example-ai",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     application_type="web")
 * example_key_vault = azure.keyvault.KeyVault("example",
 *     name="example-kv",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     tenant_id=current.tenant_id,
 *     sku_name="standard",
 *     purge_protection_enabled=True)
 * example_account = azure.storage.Account("example",
 *     name="examplesa",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     account_tier="Standard",
 *     account_replication_type="LRS")
 * example_workspace = azure.machinelearning.Workspace("example",
 *     name="example-mlw",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     application_insights_id=example_insights.id,
 *     key_vault_id=example_key_vault.id,
 *     storage_account_id=example_account.id,
 *     identity={
 *         "type": "SystemAssigned",
 *     })
 * example_virtual_network = azure.network.VirtualNetwork("example",
 *     name="example-vnet",
 *     address_spaces=["10.1.0.0/16"],
 *     location=example.location,
 *     resource_group_name=example.name)
 * example_subnet = azure.network.Subnet("example",
 *     name="example-subnet",
 *     resource_group_name=example.name,
 *     virtual_network_name=example_virtual_network.name,
 *     address_prefixes=["10.1.0.0/24"])
 * example_kubernetes_cluster = azure.containerservice.KubernetesCluster("example",
 *     name="example-aks",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     dns_prefix_private_cluster="prefix",
 *     default_node_pool={
 *         "name": "default",
 *         "node_count": 3,
 *         "vm_size": "Standard_D3_v2",
 *         "vnet_subnet_id": example_subnet.id,
 *     },
 *     identity={
 *         "type": "SystemAssigned",
 *     })
 * example_inference_cluster = azure.machinelearning.InferenceCluster("example",
 *     name="example",
 *     location=example.location,
 *     cluster_purpose="FastProd",
 *     kubernetes_cluster_id=example_kubernetes_cluster.id,
 *     description="This is an example cluster used with Terraform",
 *     machine_learning_workspace_id=example_workspace.id,
 *     tags={
 *         "stage": "example",
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var current = Azure.Core.GetClientConfig.Invoke();
 *     var example = new Azure.Core.ResourceGroup("example", new()
 *     {
 *         Name = "example-rg",
 *         Location = "west europe",
 *         Tags =
 *         {
 *             { "stage", "example" },
 *         },
 *     });
 *     var exampleInsights = new Azure.AppInsights.Insights("example", new()
 *     {
 *         Name = "example-ai",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         ApplicationType = "web",
 *     });
 *     var exampleKeyVault = new Azure.KeyVault.KeyVault("example", new()
 *     {
 *         Name = "example-kv",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         TenantId = current.Apply(getClientConfigResult => getClientConfigResult.TenantId),
 *         SkuName = "standard",
 *         PurgeProtectionEnabled = true,
 *     });
 *     var exampleAccount = new Azure.Storage.Account("example", new()
 *     {
 *         Name = "examplesa",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         AccountTier = "Standard",
 *         AccountReplicationType = "LRS",
 *     });
 *     var exampleWorkspace = new Azure.MachineLearning.Workspace("example", new()
 *     {
 *         Name = "example-mlw",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         ApplicationInsightsId = exampleInsights.Id,
 *         KeyVaultId = exampleKeyVault.Id,
 *         StorageAccountId = exampleAccount.Id,
 *         Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs
 *         {
 *             Type = "SystemAssigned",
 *         },
 *     });
 *     var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
 *     {
 *         Name = "example-vnet",
 *         AddressSpaces = new[]
 *         {
 *             "10.1.0.0/16",
 *         },
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *     });
 *     var exampleSubnet = new Azure.Network.Subnet("example", new()
 *     {
 *         Name = "example-subnet",
 *         ResourceGroupName = example.Name,
 *         VirtualNetworkName = exampleVirtualNetwork.Name,
 *         AddressPrefixes = new[]
 *         {
 *             "10.1.0.0/24",
 *         },
 *     });
 *     var exampleKubernetesCluster = new Azure.ContainerService.KubernetesCluster("example", new()
 *     {
 *         Name = "example-aks",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         DnsPrefixPrivateCluster = "prefix",
 *         DefaultNodePool = new Azure.ContainerService.Inputs.KubernetesClusterDefaultNodePoolArgs
 *         {
 *             Name = "default",
 *             NodeCount = 3,
 *             VmSize = "Standard_D3_v2",
 *             VnetSubnetId = exampleSubnet.Id,
 *         },
 *         Identity = new Azure.ContainerService.Inputs.KubernetesClusterIdentityArgs
 *         {
 *             Type = "SystemAssigned",
 *         },
 *     });
 *     var exampleInferenceCluster = new Azure.MachineLearning.InferenceCluster("example", new()
 *     {
 *         Name = "example",
 *         Location = example.Location,
 *         ClusterPurpose = "FastProd",
 *         KubernetesClusterId = exampleKubernetesCluster.Id,
 *         Description = "This is an example cluster used with Terraform",
 *         MachineLearningWorkspaceId = exampleWorkspace.Id,
 *         Tags =
 *         {
 *             { "stage", "example" },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/appinsights"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/containerservice"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/keyvault"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/machinelearning"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/network"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		current, err := core.GetClientConfig(ctx, nil, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
 * 			Name:     pulumi.String("example-rg"),
 * 			Location: pulumi.String("west europe"),
 * 			Tags: pulumi.StringMap{
 * 				"stage": pulumi.String("example"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleInsights, err := appinsights.NewInsights(ctx, "example", &appinsights.InsightsArgs{
 * 			Name:              pulumi.String("example-ai"),
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 			ApplicationType:   pulumi.String("web"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleKeyVault, err := keyvault.NewKeyVault(ctx, "example", &keyvault.KeyVaultArgs{
 * 			Name:                   pulumi.String("example-kv"),
 * 			Location:               example.Location,
 * 			ResourceGroupName:      example.Name,
 * 			TenantId:               pulumi.String(current.TenantId),
 * 			SkuName:                pulumi.String("standard"),
 * 			PurgeProtectionEnabled: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleAccount, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
 * 			Name:                   pulumi.String("examplesa"),
 * 			Location:               example.Location,
 * 			ResourceGroupName:      example.Name,
 * 			AccountTier:            pulumi.String("Standard"),
 * 			AccountReplicationType: pulumi.String("LRS"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleWorkspace, err := machinelearning.NewWorkspace(ctx, "example", &machinelearning.WorkspaceArgs{
 * 			Name:                  pulumi.String("example-mlw"),
 * 			Location:              example.Location,
 * 			ResourceGroupName:     example.Name,
 * 			ApplicationInsightsId: exampleInsights.ID(),
 * 			KeyVaultId:            exampleKeyVault.ID(),
 * 			StorageAccountId:      exampleAccount.ID(),
 * 			Identity: &machinelearning.WorkspaceIdentityArgs{
 * 				Type: pulumi.String("SystemAssigned"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
 * 			Name: pulumi.String("example-vnet"),
 * 			AddressSpaces: pulumi.StringArray{
 * 				pulumi.String("10.1.0.0/16"),
 * 			},
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 		})
 * 		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.1.0.0/24"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleKubernetesCluster, err := containerservice.NewKubernetesCluster(ctx, "example", &containerservice.KubernetesClusterArgs{
 * 			Name:                    pulumi.String("example-aks"),
 * 			Location:                example.Location,
 * 			ResourceGroupName:       example.Name,
 * 			DnsPrefixPrivateCluster: pulumi.String("prefix"),
 * 			DefaultNodePool: &containerservice.KubernetesClusterDefaultNodePoolArgs{
 * 				Name:         pulumi.String("default"),
 * 				NodeCount:    pulumi.Int(3),
 * 				VmSize:       pulumi.String("Standard_D3_v2"),
 * 				VnetSubnetId: exampleSubnet.ID(),
 * 			},
 * 			Identity: &containerservice.KubernetesClusterIdentityArgs{
 * 				Type: pulumi.String("SystemAssigned"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = machinelearning.NewInferenceCluster(ctx, "example", &machinelearning.InferenceClusterArgs{
 * 			Name:                       pulumi.String("example"),
 * 			Location:                   example.Location,
 * 			ClusterPurpose:             pulumi.String("FastProd"),
 * 			KubernetesClusterId:        exampleKubernetesCluster.ID(),
 * 			Description:                pulumi.String("This is an example cluster used with Terraform"),
 * 			MachineLearningWorkspaceId: exampleWorkspace.ID(),
 * 			Tags: pulumi.StringMap{
 * 				"stage": pulumi.String("example"),
 * 			},
 * 		})
 * 		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.CoreFunctions;
 * import com.pulumi.azure.core.ResourceGroup;
 * import com.pulumi.azure.core.ResourceGroupArgs;
 * import com.pulumi.azure.appinsights.Insights;
 * import com.pulumi.azure.appinsights.InsightsArgs;
 * import com.pulumi.azure.keyvault.KeyVault;
 * import com.pulumi.azure.keyvault.KeyVaultArgs;
 * import com.pulumi.azure.storage.Account;
 * import com.pulumi.azure.storage.AccountArgs;
 * import com.pulumi.azure.machinelearning.Workspace;
 * import com.pulumi.azure.machinelearning.WorkspaceArgs;
 * import com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;
 * 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.containerservice.KubernetesCluster;
 * import com.pulumi.azure.containerservice.KubernetesClusterArgs;
 * import com.pulumi.azure.containerservice.inputs.KubernetesClusterDefaultNodePoolArgs;
 * import com.pulumi.azure.containerservice.inputs.KubernetesClusterIdentityArgs;
 * import com.pulumi.azure.machinelearning.InferenceCluster;
 * import com.pulumi.azure.machinelearning.InferenceClusterArgs;
 * 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 current = CoreFunctions.getClientConfig();
 *         var example = new ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("example-rg")
 *             .location("west europe")
 *             .tags(Map.of("stage", "example"))
 *             .build());
 *         var exampleInsights = new Insights("exampleInsights", InsightsArgs.builder()
 *             .name("example-ai")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .applicationType("web")
 *             .build());
 *         var exampleKeyVault = new KeyVault("exampleKeyVault", KeyVaultArgs.builder()
 *             .name("example-kv")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .tenantId(current.applyValue(getClientConfigResult -> getClientConfigResult.tenantId()))
 *             .skuName("standard")
 *             .purgeProtectionEnabled(true)
 *             .build());
 *         var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
 *             .name("examplesa")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .accountTier("Standard")
 *             .accountReplicationType("LRS")
 *             .build());
 *         var exampleWorkspace = new Workspace("exampleWorkspace", WorkspaceArgs.builder()
 *             .name("example-mlw")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .applicationInsightsId(exampleInsights.id())
 *             .keyVaultId(exampleKeyVault.id())
 *             .storageAccountId(exampleAccount.id())
 *             .identity(WorkspaceIdentityArgs.builder()
 *                 .type("SystemAssigned")
 *                 .build())
 *             .build());
 *         var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
 *             .name("example-vnet")
 *             .addressSpaces("10.1.0.0/16")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .build());
 *         var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
 *             .name("example-subnet")
 *             .resourceGroupName(example.name())
 *             .virtualNetworkName(exampleVirtualNetwork.name())
 *             .addressPrefixes("10.1.0.0/24")
 *             .build());
 *         var exampleKubernetesCluster = new KubernetesCluster("exampleKubernetesCluster", KubernetesClusterArgs.builder()
 *             .name("example-aks")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .dnsPrefixPrivateCluster("prefix")
 *             .defaultNodePool(KubernetesClusterDefaultNodePoolArgs.builder()
 *                 .name("default")
 *                 .nodeCount(3)
 *                 .vmSize("Standard_D3_v2")
 *                 .vnetSubnetId(exampleSubnet.id())
 *                 .build())
 *             .identity(KubernetesClusterIdentityArgs.builder()
 *                 .type("SystemAssigned")
 *                 .build())
 *             .build());
 *         var exampleInferenceCluster = new InferenceCluster("exampleInferenceCluster", InferenceClusterArgs.builder()
 *             .name("example")
 *             .location(example.location())
 *             .clusterPurpose("FastProd")
 *             .kubernetesClusterId(exampleKubernetesCluster.id())
 *             .description("This is an example cluster used with Terraform")
 *             .machineLearningWorkspaceId(exampleWorkspace.id())
 *             .tags(Map.of("stage", "example"))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-rg
 *       location: west europe
 *       tags:
 *         stage: example
 *   exampleInsights:
 *     type: azure:appinsights:Insights
 *     name: example
 *     properties:
 *       name: example-ai
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       applicationType: web
 *   exampleKeyVault:
 *     type: azure:keyvault:KeyVault
 *     name: example
 *     properties:
 *       name: example-kv
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       tenantId: ${current.tenantId}
 *       skuName: standard
 *       purgeProtectionEnabled: true
 *   exampleAccount:
 *     type: azure:storage:Account
 *     name: example
 *     properties:
 *       name: examplesa
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       accountTier: Standard
 *       accountReplicationType: LRS
 *   exampleWorkspace:
 *     type: azure:machinelearning:Workspace
 *     name: example
 *     properties:
 *       name: example-mlw
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       applicationInsightsId: ${exampleInsights.id}
 *       keyVaultId: ${exampleKeyVault.id}
 *       storageAccountId: ${exampleAccount.id}
 *       identity:
 *         type: SystemAssigned
 *   exampleVirtualNetwork:
 *     type: azure:network:VirtualNetwork
 *     name: example
 *     properties:
 *       name: example-vnet
 *       addressSpaces:
 *         - 10.1.0.0/16
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *   exampleSubnet:
 *     type: azure:network:Subnet
 *     name: example
 *     properties:
 *       name: example-subnet
 *       resourceGroupName: ${example.name}
 *       virtualNetworkName: ${exampleVirtualNetwork.name}
 *       addressPrefixes:
 *         - 10.1.0.0/24
 *   exampleKubernetesCluster:
 *     type: azure:containerservice:KubernetesCluster
 *     name: example
 *     properties:
 *       name: example-aks
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       dnsPrefixPrivateCluster: prefix
 *       defaultNodePool:
 *         name: default
 *         nodeCount: 3
 *         vmSize: Standard_D3_v2
 *         vnetSubnetId: ${exampleSubnet.id}
 *       identity:
 *         type: SystemAssigned
 *   exampleInferenceCluster:
 *     type: azure:machinelearning:InferenceCluster
 *     name: example
 *     properties:
 *       name: example
 *       location: ${example.location}
 *       clusterPurpose: FastProd
 *       kubernetesClusterId: ${exampleKubernetesCluster.id}
 *       description: This is an example cluster used with Terraform
 *       machineLearningWorkspaceId: ${exampleWorkspace.id}
 *       tags:
 *         stage: example
 * variables:
 *   current:
 *     fn::invoke:
 *       Function: azure:core:getClientConfig
 *       Arguments: {}
 * ```
 * 
 * ## Import
 * Machine Learning Inference Clusters can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:machinelearning/inferenceCluster:InferenceCluster example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.MachineLearningServices/workspaces/workspace1/computes/cluster1
 * ```
 * @property clusterPurpose The purpose of the Inference Cluster. Options are `DevTest`, `DenseProd` and `FastProd`. If used for Development or Testing, use `DevTest` here. Default purpose is `FastProd`, which is recommended for production workloads. Changing this forces a new Machine Learning Inference Cluster to be created.
 * > **NOTE:** When creating or attaching a cluster, if the cluster will be used for production (`cluster_purpose = "FastProd"`), then it must contain at least 12 virtual CPUs. The number of virtual CPUs can be calculated by multiplying the number of nodes in the cluster by the number of cores provided by the VM size selected. For example, if you use a VM size of "Standard_D3_v2", which has 4 virtual cores, then you should select 3 or greater as the number of nodes.
 * @property description The description of the Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
 * @property identity An `identity` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
 * @property kubernetesClusterId The ID of the Kubernetes Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
 * @property location The Azure Region where the Machine Learning Inference Cluster should exist. Changing this forces a new Machine Learning Inference Cluster to be created.
 * @property machineLearningWorkspaceId The ID of the Machine Learning Workspace. Changing this forces a new Machine Learning Inference Cluster to be created.
 * @property name The name which should be used for this Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
 * @property ssl A `ssl` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
 * @property tags A mapping of tags which should be assigned to the Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
 */
public data class InferenceClusterArgs(
    public val clusterPurpose: Output? = null,
    public val description: Output? = null,
    public val identity: Output? = null,
    public val kubernetesClusterId: Output? = null,
    public val location: Output? = null,
    public val machineLearningWorkspaceId: Output? = null,
    public val name: Output? = null,
    public val ssl: Output? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.machinelearning.InferenceClusterArgs =
        com.pulumi.azure.machinelearning.InferenceClusterArgs.builder()
            .clusterPurpose(clusterPurpose?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .identity(identity?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .kubernetesClusterId(kubernetesClusterId?.applyValue({ args0 -> args0 }))
            .location(location?.applyValue({ args0 -> args0 }))
            .machineLearningWorkspaceId(machineLearningWorkspaceId?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .ssl(ssl?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            ).build()
}

/**
 * Builder for [InferenceClusterArgs].
 */
@PulumiTagMarker
public class InferenceClusterArgsBuilder internal constructor() {
    private var clusterPurpose: Output? = null

    private var description: Output? = null

    private var identity: Output? = null

    private var kubernetesClusterId: Output? = null

    private var location: Output? = null

    private var machineLearningWorkspaceId: Output? = null

    private var name: Output? = null

    private var ssl: Output? = null

    private var tags: Output>? = null

    /**
     * @param value The purpose of the Inference Cluster. Options are `DevTest`, `DenseProd` and `FastProd`. If used for Development or Testing, use `DevTest` here. Default purpose is `FastProd`, which is recommended for production workloads. Changing this forces a new Machine Learning Inference Cluster to be created.
     * > **NOTE:** When creating or attaching a cluster, if the cluster will be used for production (`cluster_purpose = "FastProd"`), then it must contain at least 12 virtual CPUs. The number of virtual CPUs can be calculated by multiplying the number of nodes in the cluster by the number of cores provided by the VM size selected. For example, if you use a VM size of "Standard_D3_v2", which has 4 virtual cores, then you should select 3 or greater as the number of nodes.
     */
    @JvmName("slsxhwfyqutlxgil")
    public suspend fun clusterPurpose(`value`: Output) {
        this.clusterPurpose = value
    }

    /**
     * @param value The description of the Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("tnlrulsujghhjkiy")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value An `identity` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("sfijmsgoiuoaqedo")
    public suspend fun identity(`value`: Output) {
        this.identity = value
    }

    /**
     * @param value The ID of the Kubernetes Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("abderdmdvgmpipxr")
    public suspend fun kubernetesClusterId(`value`: Output) {
        this.kubernetesClusterId = value
    }

    /**
     * @param value The Azure Region where the Machine Learning Inference Cluster should exist. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("jqsedqslaehksarw")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value The ID of the Machine Learning Workspace. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("lqldrmbydpfjvegl")
    public suspend fun machineLearningWorkspaceId(`value`: Output) {
        this.machineLearningWorkspaceId = value
    }

    /**
     * @param value The name which should be used for this Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("tasvivovdodglxdp")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value A `ssl` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("ubmichoaslcsodiu")
    public suspend fun ssl(`value`: Output) {
        this.ssl = value
    }

    /**
     * @param value A mapping of tags which should be assigned to the Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("lhbylpsgfpjhkqec")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value The purpose of the Inference Cluster. Options are `DevTest`, `DenseProd` and `FastProd`. If used for Development or Testing, use `DevTest` here. Default purpose is `FastProd`, which is recommended for production workloads. Changing this forces a new Machine Learning Inference Cluster to be created.
     * > **NOTE:** When creating or attaching a cluster, if the cluster will be used for production (`cluster_purpose = "FastProd"`), then it must contain at least 12 virtual CPUs. The number of virtual CPUs can be calculated by multiplying the number of nodes in the cluster by the number of cores provided by the VM size selected. For example, if you use a VM size of "Standard_D3_v2", which has 4 virtual cores, then you should select 3 or greater as the number of nodes.
     */
    @JvmName("rcppmkpqwpwuodfr")
    public suspend fun clusterPurpose(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clusterPurpose = mapped
    }

    /**
     * @param value The description of the Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("vilntobnroxbkqyh")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value An `identity` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("fsnudhfgldqbikhx")
    public suspend fun identity(`value`: InferenceClusterIdentityArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.identity = mapped
    }

    /**
     * @param argument An `identity` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("xfcfhruwkeylfujw")
    public suspend fun identity(argument: suspend InferenceClusterIdentityArgsBuilder.() -> Unit) {
        val toBeMapped = InferenceClusterIdentityArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.identity = mapped
    }

    /**
     * @param value The ID of the Kubernetes Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("ngpjuybagfhnpyps")
    public suspend fun kubernetesClusterId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kubernetesClusterId = mapped
    }

    /**
     * @param value The Azure Region where the Machine Learning Inference Cluster should exist. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("erqtkwfdqloljhlm")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value The ID of the Machine Learning Workspace. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("uhjxiexdnanvbxog")
    public suspend fun machineLearningWorkspaceId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.machineLearningWorkspaceId = mapped
    }

    /**
     * @param value The name which should be used for this Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("aesnouuxmbcbhouq")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value A `ssl` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("rtttfqhcjerrtjqc")
    public suspend fun ssl(`value`: InferenceClusterSslArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ssl = mapped
    }

    /**
     * @param argument A `ssl` block as defined below. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("fsbbycqtwbexqcjj")
    public suspend fun ssl(argument: suspend InferenceClusterSslArgsBuilder.() -> Unit) {
        val toBeMapped = InferenceClusterSslArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.ssl = mapped
    }

    /**
     * @param value A mapping of tags which should be assigned to the Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("fsqmylassbjutuna")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values A mapping of tags which should be assigned to the Machine Learning Inference Cluster. Changing this forces a new Machine Learning Inference Cluster to be created.
     */
    @JvmName("lskpfpxxdwxkecpj")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): InferenceClusterArgs = InferenceClusterArgs(
        clusterPurpose = clusterPurpose,
        description = description,
        identity = identity,
        kubernetesClusterId = kubernetesClusterId,
        location = location,
        machineLearningWorkspaceId = machineLearningWorkspaceId,
        name = name,
        ssl = ssl,
        tags = tags,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy