1. Packages
  2. Google Cloud (GCP) Classic
  3. API Docs
  4. workstations
  5. WorkstationConfig
Google Cloud Classic v8.9.3 published on Monday, Nov 18, 2024 by Pulumi

gcp.workstations.WorkstationConfig

Explore with Pulumi AI

gcp logo
Google Cloud Classic v8.9.3 published on Monday, Nov 18, 2024 by Pulumi

    Example Usage

    Workstation Config Basic

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const tagKey1 = new gcp.tags.TagKey("tag_key1", {
        parent: "organizations/123456789",
        shortName: "keyname",
    });
    const tagValue1 = new gcp.tags.TagValue("tag_value1", {
        parent: tagKey1.id,
        shortName: "valuename",
    });
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        idleTimeout: "600s",
        runningTimeout: "21600s",
        replicaZones: [
            "us-central1-a",
            "us-central1-b",
        ],
        annotations: {
            "label-one": "value-one",
        },
        labels: {
            label: "key",
        },
        maxUsableWorkstations: 1,
        host: {
            gceInstance: {
                machineType: "e2-standard-4",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
                disableSsh: false,
                vmTags: pulumi.all([tagKey1.id, tagValue1.id]).apply(([tagKey1Id, tagValue1Id]) => {
                    [tagKey1Id]: tagValue1Id,
                }),
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    tag_key1 = gcp.tags.TagKey("tag_key1",
        parent="organizations/123456789",
        short_name="keyname")
    tag_value1 = gcp.tags.TagValue("tag_value1",
        parent=tag_key1.id,
        short_name="valuename")
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        idle_timeout="600s",
        running_timeout="21600s",
        replica_zones=[
            "us-central1-a",
            "us-central1-b",
        ],
        annotations={
            "label-one": "value-one",
        },
        labels={
            "label": "key",
        },
        max_usable_workstations=1,
        host={
            "gce_instance": {
                "machine_type": "e2-standard-4",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
                "disable_ssh": False,
                "vm_tags": pulumi.Output.all(
                    tagKey1Id=tag_key1.id,
                    tagValue1Id=tag_value1.id
    ).apply(lambda resolved_outputs: {
                    resolved_outputs['tagKey1Id']: resolved_outputs['tagValue1Id'],
                })
    ,
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
    tagKey1, err := tags.NewTagKey(ctx, "tag_key1", &tags.TagKeyArgs{
    Parent: pulumi.String("organizations/123456789"),
    ShortName: pulumi.String("keyname"),
    })
    if err != nil {
    return err
    }
    tagValue1, err := tags.NewTagValue(ctx, "tag_value1", &tags.TagValueArgs{
    Parent: tagKey1.ID(),
    ShortName: pulumi.String("valuename"),
    })
    if err != nil {
    return err
    }
    _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    Name: pulumi.String("workstation-cluster"),
    AutoCreateSubnetworks: pulumi.Bool(false),
    })
    if err != nil {
    return err
    }
    defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    Name: pulumi.String("workstation-cluster"),
    IpCidrRange: pulumi.String("10.0.0.0/24"),
    Region: pulumi.String("us-central1"),
    Network: _default.Name,
    })
    if err != nil {
    return err
    }
    defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    WorkstationClusterId: pulumi.String("workstation-cluster"),
    Network: _default.ID(),
    Subnetwork: defaultSubnetwork.ID(),
    Location: pulumi.String("us-central1"),
    Labels: pulumi.StringMap{
    "label": pulumi.String("key"),
    },
    Annotations: pulumi.StringMap{
    "label-one": pulumi.String("value-one"),
    },
    })
    if err != nil {
    return err
    }
    _, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    WorkstationConfigId: pulumi.String("workstation-config"),
    WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    Location: pulumi.String("us-central1"),
    IdleTimeout: pulumi.String("600s"),
    RunningTimeout: pulumi.String("21600s"),
    ReplicaZones: pulumi.StringArray{
    pulumi.String("us-central1-a"),
    pulumi.String("us-central1-b"),
    },
    Annotations: pulumi.StringMap{
    "label-one": pulumi.String("value-one"),
    },
    Labels: pulumi.StringMap{
    "label": pulumi.String("key"),
    },
    MaxUsableWorkstations: pulumi.Int(1),
    Host: &workstations.WorkstationConfigHostArgs{
    GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    MachineType: pulumi.String("e2-standard-4"),
    BootDiskSizeGb: pulumi.Int(35),
    DisablePublicIpAddresses: pulumi.Bool(true),
    DisableSsh: pulumi.Bool(false),
    VmTags: pulumi.All(tagKey1.ID(),tagValue1.ID()).ApplyT(func(_args []interface{}) (map[string]string, error) {
    tagKey1Id := _args[0].(string)
    tagValue1Id := _args[1].(string)
    return map[string]string{
    tagKey1Id: tagValue1Id,
    }, nil
    }).(pulumi.Map[string]stringOutput),
    },
    },
    })
    if err != nil {
    return err
    }
    return nil
    })
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var tagKey1 = new Gcp.Tags.TagKey("tag_key1", new()
        {
            Parent = "organizations/123456789",
            ShortName = "keyname",
        });
    
        var tagValue1 = new Gcp.Tags.TagValue("tag_value1", new()
        {
            Parent = tagKey1.Id,
            ShortName = "valuename",
        });
    
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            IdleTimeout = "600s",
            RunningTimeout = "21600s",
            ReplicaZones = new[]
            {
                "us-central1-a",
                "us-central1-b",
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
            Labels = 
            {
                { "label", "key" },
            },
            MaxUsableWorkstations = 1,
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "e2-standard-4",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                    DisableSsh = false,
                    VmTags = Output.Tuple(tagKey1.Id, tagValue1.Id).Apply(values =>
                    {
                        var tagKey1Id = values.Item1;
                        var tagValue1Id = values.Item2;
                        return 
                        {
                            { tagKey1Id, tagValue1Id },
                        };
                    }),
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.tags.TagKey;
    import com.pulumi.gcp.tags.TagKeyArgs;
    import com.pulumi.gcp.tags.TagValue;
    import com.pulumi.gcp.tags.TagValueArgs;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    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 tagKey1 = new TagKey("tagKey1", TagKeyArgs.builder()
                .parent("organizations/123456789")
                .shortName("keyname")
                .build());
    
            var tagValue1 = new TagValue("tagValue1", TagValueArgs.builder()
                .parent(tagKey1.id())
                .shortName("valuename")
                .build());
    
            var default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .idleTimeout("600s")
                .runningTimeout("21600s")
                .replicaZones(            
                    "us-central1-a",
                    "us-central1-b")
                .annotations(Map.of("label-one", "value-one"))
                .labels(Map.of("label", "key"))
                .maxUsableWorkstations(1)
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("e2-standard-4")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .disableSsh(false)
                        .vmTags(Output.tuple(tagKey1.id(), tagValue1.id()).applyValue(values -> {
                            var tagKey1Id = values.t1;
                            var tagValue1Id = values.t2;
                            return Map.of(tagKey1Id, tagValue1Id);
                        }))
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      tagKey1:
        type: gcp:tags:TagKey
        name: tag_key1
        properties:
          parent: organizations/123456789
          shortName: keyname
      tagValue1:
        type: gcp:tags:TagValue
        name: tag_value1
        properties:
          parent: ${tagKey1.id}
          shortName: valuename
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          idleTimeout: 600s
          runningTimeout: 21600s
          replicaZones:
            - us-central1-a
            - us-central1-b
          annotations:
            label-one: value-one
          labels:
            label: key
          maxUsableWorkstations: 1
          host:
            gceInstance:
              machineType: e2-standard-4
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
              disableSsh: false
              vmTags:
                ${tagKey1.id}: ${tagValue1.id}
    

    Workstation Config Container

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        host: {
            gceInstance: {
                machineType: "n1-standard-4",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
                enableNestedVirtualization: true,
            },
        },
        container: {
            image: "intellij",
            env: {
                NAME: "FOO",
                BABE: "bar",
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        host={
            "gce_instance": {
                "machine_type": "n1-standard-4",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
                "enable_nested_virtualization": True,
            },
        },
        container={
            "image": "intellij",
            "env": {
                "NAME": "FOO",
                "BABE": "bar",
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    			Annotations: pulumi.StringMap{
    				"label-one": pulumi.String("value-one"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             pulumi.String("us-central1"),
    			Host: &workstations.WorkstationConfigHostArgs{
    				GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    					MachineType:                pulumi.String("n1-standard-4"),
    					BootDiskSizeGb:             pulumi.Int(35),
    					DisablePublicIpAddresses:   pulumi.Bool(true),
    					EnableNestedVirtualization: pulumi.Bool(true),
    				},
    			},
    			Container: &workstations.WorkstationConfigContainerArgs{
    				Image: pulumi.String("intellij"),
    				Env: pulumi.StringMap{
    					"NAME": pulumi.String("FOO"),
    					"BABE": pulumi.String("bar"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "n1-standard-4",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                    EnableNestedVirtualization = true,
                },
            },
            Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs
            {
                Image = "intellij",
                Env = 
                {
                    { "NAME", "FOO" },
                    { "BABE", "bar" },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigContainerArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("n1-standard-4")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .enableNestedVirtualization(true)
                        .build())
                    .build())
                .container(WorkstationConfigContainerArgs.builder()
                    .image("intellij")
                    .env(Map.ofEntries(
                        Map.entry("NAME", "FOO"),
                        Map.entry("BABE", "bar")
                    ))
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          host:
            gceInstance:
              machineType: n1-standard-4
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
              enableNestedVirtualization: true
          container:
            image: intellij
            env:
              NAME: FOO
              BABE: bar
    

    Workstation Config Persistent Directories

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        host: {
            gceInstance: {
                machineType: "e2-standard-4",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
                shieldedInstanceConfig: {
                    enableSecureBoot: true,
                    enableVtpm: true,
                },
            },
        },
        persistentDirectories: [{
            mountPath: "/home",
            gcePd: {
                sizeGb: 200,
                fsType: "ext4",
                diskType: "pd-standard",
                reclaimPolicy: "DELETE",
            },
        }],
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        host={
            "gce_instance": {
                "machine_type": "e2-standard-4",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
                "shielded_instance_config": {
                    "enable_secure_boot": True,
                    "enable_vtpm": True,
                },
            },
        },
        persistent_directories=[{
            "mount_path": "/home",
            "gce_pd": {
                "size_gb": 200,
                "fs_type": "ext4",
                "disk_type": "pd-standard",
                "reclaim_policy": "DELETE",
            },
        }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    			Annotations: pulumi.StringMap{
    				"label-one": pulumi.String("value-one"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             pulumi.String("us-central1"),
    			Host: &workstations.WorkstationConfigHostArgs{
    				GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    					MachineType:              pulumi.String("e2-standard-4"),
    					BootDiskSizeGb:           pulumi.Int(35),
    					DisablePublicIpAddresses: pulumi.Bool(true),
    					ShieldedInstanceConfig: &workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{
    						EnableSecureBoot: pulumi.Bool(true),
    						EnableVtpm:       pulumi.Bool(true),
    					},
    				},
    			},
    			PersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{
    				&workstations.WorkstationConfigPersistentDirectoryArgs{
    					MountPath: pulumi.String("/home"),
    					GcePd: &workstations.WorkstationConfigPersistentDirectoryGcePdArgs{
    						SizeGb:        pulumi.Int(200),
    						FsType:        pulumi.String("ext4"),
    						DiskType:      pulumi.String("pd-standard"),
    						ReclaimPolicy: pulumi.String("DELETE"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "e2-standard-4",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                    ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs
                    {
                        EnableSecureBoot = true,
                        EnableVtpm = true,
                    },
                },
            },
            PersistentDirectories = new[]
            {
                new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs
                {
                    MountPath = "/home",
                    GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs
                    {
                        SizeGb = 200,
                        FsType = "ext4",
                        DiskType = "pd-standard",
                        ReclaimPolicy = "DELETE",
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("e2-standard-4")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()
                            .enableSecureBoot(true)
                            .enableVtpm(true)
                            .build())
                        .build())
                    .build())
                .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()
                    .mountPath("/home")
                    .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()
                        .sizeGb(200)
                        .fsType("ext4")
                        .diskType("pd-standard")
                        .reclaimPolicy("DELETE")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          host:
            gceInstance:
              machineType: e2-standard-4
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
              shieldedInstanceConfig:
                enableSecureBoot: true
                enableVtpm: true
          persistentDirectories:
            - mountPath: /home
              gcePd:
                sizeGb: 200
                fsType: ext4
                diskType: pd-standard
                reclaimPolicy: DELETE
    

    Workstation Config Source Snapshot

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const mySourceDisk = new gcp.compute.Disk("my_source_disk", {
        name: "workstation-config",
        size: 10,
        type: "pd-ssd",
        zone: "us-central1-a",
    });
    const mySourceSnapshot = new gcp.compute.Snapshot("my_source_snapshot", {
        name: "workstation-config",
        sourceDisk: mySourceDisk.name,
        zone: "us-central1-a",
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: defaultWorkstationCluster.location,
        persistentDirectories: [{
            mountPath: "/home",
            gcePd: {
                sourceSnapshot: mySourceSnapshot.id,
                reclaimPolicy: "DELETE",
            },
        }],
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    my_source_disk = gcp.compute.Disk("my_source_disk",
        name="workstation-config",
        size=10,
        type="pd-ssd",
        zone="us-central1-a")
    my_source_snapshot = gcp.compute.Snapshot("my_source_snapshot",
        name="workstation-config",
        source_disk=my_source_disk.name,
        zone="us-central1-a")
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1")
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location=default_workstation_cluster.location,
        persistent_directories=[{
            "mount_path": "/home",
            "gce_pd": {
                "source_snapshot": my_source_snapshot.id,
                "reclaim_policy": "DELETE",
            },
        }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		mySourceDisk, err := compute.NewDisk(ctx, "my_source_disk", &compute.DiskArgs{
    			Name: pulumi.String("workstation-config"),
    			Size: pulumi.Int(10),
    			Type: pulumi.String("pd-ssd"),
    			Zone: pulumi.String("us-central1-a"),
    		})
    		if err != nil {
    			return err
    		}
    		mySourceSnapshot, err := compute.NewSnapshot(ctx, "my_source_snapshot", &compute.SnapshotArgs{
    			Name:       pulumi.String("workstation-config"),
    			SourceDisk: mySourceDisk.Name,
    			Zone:       pulumi.String("us-central1-a"),
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             defaultWorkstationCluster.Location,
    			PersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{
    				&workstations.WorkstationConfigPersistentDirectoryArgs{
    					MountPath: pulumi.String("/home"),
    					GcePd: &workstations.WorkstationConfigPersistentDirectoryGcePdArgs{
    						SourceSnapshot: mySourceSnapshot.ID(),
    						ReclaimPolicy:  pulumi.String("DELETE"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var mySourceDisk = new Gcp.Compute.Disk("my_source_disk", new()
        {
            Name = "workstation-config",
            Size = 10,
            Type = "pd-ssd",
            Zone = "us-central1-a",
        });
    
        var mySourceSnapshot = new Gcp.Compute.Snapshot("my_source_snapshot", new()
        {
            Name = "workstation-config",
            SourceDisk = mySourceDisk.Name,
            Zone = "us-central1-a",
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = defaultWorkstationCluster.Location,
            PersistentDirectories = new[]
            {
                new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs
                {
                    MountPath = "/home",
                    GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs
                    {
                        SourceSnapshot = mySourceSnapshot.Id,
                        ReclaimPolicy = "DELETE",
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.compute.Disk;
    import com.pulumi.gcp.compute.DiskArgs;
    import com.pulumi.gcp.compute.Snapshot;
    import com.pulumi.gcp.compute.SnapshotArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var mySourceDisk = new Disk("mySourceDisk", DiskArgs.builder()
                .name("workstation-config")
                .size(10)
                .type("pd-ssd")
                .zone("us-central1-a")
                .build());
    
            var mySourceSnapshot = new Snapshot("mySourceSnapshot", SnapshotArgs.builder()
                .name("workstation-config")
                .sourceDisk(mySourceDisk.name())
                .zone("us-central1-a")
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location(defaultWorkstationCluster.location())
                .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()
                    .mountPath("/home")
                    .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()
                        .sourceSnapshot(mySourceSnapshot.id())
                        .reclaimPolicy("DELETE")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      mySourceDisk:
        type: gcp:compute:Disk
        name: my_source_disk
        properties:
          name: workstation-config
          size: 10
          type: pd-ssd
          zone: us-central1-a
      mySourceSnapshot:
        type: gcp:compute:Snapshot
        name: my_source_snapshot
        properties:
          name: workstation-config
          sourceDisk: ${mySourceDisk.name}
          zone: us-central1-a
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: ${defaultWorkstationCluster.location}
          persistentDirectories:
            - mountPath: /home
              gcePd:
                sourceSnapshot: ${mySourceSnapshot.id}
                reclaimPolicy: DELETE
    

    Workstation Config Shielded Instance Config

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        host: {
            gceInstance: {
                machineType: "e2-standard-4",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
                shieldedInstanceConfig: {
                    enableSecureBoot: true,
                    enableVtpm: true,
                },
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        host={
            "gce_instance": {
                "machine_type": "e2-standard-4",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
                "shielded_instance_config": {
                    "enable_secure_boot": True,
                    "enable_vtpm": True,
                },
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    			Annotations: pulumi.StringMap{
    				"label-one": pulumi.String("value-one"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             pulumi.String("us-central1"),
    			Host: &workstations.WorkstationConfigHostArgs{
    				GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    					MachineType:              pulumi.String("e2-standard-4"),
    					BootDiskSizeGb:           pulumi.Int(35),
    					DisablePublicIpAddresses: pulumi.Bool(true),
    					ShieldedInstanceConfig: &workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{
    						EnableSecureBoot: pulumi.Bool(true),
    						EnableVtpm:       pulumi.Bool(true),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "e2-standard-4",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                    ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs
                    {
                        EnableSecureBoot = true,
                        EnableVtpm = true,
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("e2-standard-4")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()
                            .enableSecureBoot(true)
                            .enableVtpm(true)
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          host:
            gceInstance:
              machineType: e2-standard-4
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
              shieldedInstanceConfig:
                enableSecureBoot: true
                enableVtpm: true
    

    Workstation Config Accelerators

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        host: {
            gceInstance: {
                machineType: "n1-standard-2",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
                accelerators: [{
                    type: "nvidia-tesla-t4",
                    count: 1,
                }],
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        host={
            "gce_instance": {
                "machine_type": "n1-standard-2",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
                "accelerators": [{
                    "type": "nvidia-tesla-t4",
                    "count": 1,
                }],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    			Annotations: pulumi.StringMap{
    				"label-one": pulumi.String("value-one"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             pulumi.String("us-central1"),
    			Host: &workstations.WorkstationConfigHostArgs{
    				GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    					MachineType:              pulumi.String("n1-standard-2"),
    					BootDiskSizeGb:           pulumi.Int(35),
    					DisablePublicIpAddresses: pulumi.Bool(true),
    					Accelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{
    						&workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{
    							Type:  pulumi.String("nvidia-tesla-t4"),
    							Count: pulumi.Int(1),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "n1-standard-2",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                    Accelerators = new[]
                    {
                        new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs
                        {
                            Type = "nvidia-tesla-t4",
                            Count = 1,
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("n1-standard-2")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()
                            .type("nvidia-tesla-t4")
                            .count("1")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          host:
            gceInstance:
              machineType: n1-standard-2
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
              accelerators:
                - type: nvidia-tesla-t4
                  count: '1'
    

    Workstation Config Boost

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        host: {
            gceInstance: {
                machineType: "e2-standard-4",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
                boostConfigs: [
                    {
                        id: "boost-1",
                        machineType: "n1-standard-2",
                        accelerators: [{
                            type: "nvidia-tesla-t4",
                            count: 1,
                        }],
                    },
                    {
                        id: "boost-2",
                        machineType: "n1-standard-2",
                        poolSize: 2,
                        bootDiskSizeGb: 30,
                        enableNestedVirtualization: true,
                    },
                ],
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        host={
            "gce_instance": {
                "machine_type": "e2-standard-4",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
                "boost_configs": [
                    {
                        "id": "boost-1",
                        "machine_type": "n1-standard-2",
                        "accelerators": [{
                            "type": "nvidia-tesla-t4",
                            "count": 1,
                        }],
                    },
                    {
                        "id": "boost-2",
                        "machine_type": "n1-standard-2",
                        "pool_size": 2,
                        "boot_disk_size_gb": 30,
                        "enable_nested_virtualization": True,
                    },
                ],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    			Annotations: pulumi.StringMap{
    				"label-one": pulumi.String("value-one"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             pulumi.String("us-central1"),
    			Host: &workstations.WorkstationConfigHostArgs{
    				GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    					MachineType:              pulumi.String("e2-standard-4"),
    					BootDiskSizeGb:           pulumi.Int(35),
    					DisablePublicIpAddresses: pulumi.Bool(true),
    					BoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{
    						&workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{
    							Id:          pulumi.String("boost-1"),
    							MachineType: pulumi.String("n1-standard-2"),
    							Accelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{
    								&workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{
    									Type:  pulumi.String("nvidia-tesla-t4"),
    									Count: pulumi.Int(1),
    								},
    							},
    						},
    						&workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{
    							Id:                         pulumi.String("boost-2"),
    							MachineType:                pulumi.String("n1-standard-2"),
    							PoolSize:                   pulumi.Int(2),
    							BootDiskSizeGb:             pulumi.Int(30),
    							EnableNestedVirtualization: pulumi.Bool(true),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "e2-standard-4",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                    BoostConfigs = new[]
                    {
                        new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs
                        {
                            Id = "boost-1",
                            MachineType = "n1-standard-2",
                            Accelerators = new[]
                            {
                                new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs
                                {
                                    Type = "nvidia-tesla-t4",
                                    Count = 1,
                                },
                            },
                        },
                        new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs
                        {
                            Id = "boost-2",
                            MachineType = "n1-standard-2",
                            PoolSize = 2,
                            BootDiskSizeGb = 30,
                            EnableNestedVirtualization = true,
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("e2-standard-4")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .boostConfigs(                    
                            WorkstationConfigHostGceInstanceBoostConfigArgs.builder()
                                .id("boost-1")
                                .machineType("n1-standard-2")
                                .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()
                                    .type("nvidia-tesla-t4")
                                    .count("1")
                                    .build())
                                .build(),
                            WorkstationConfigHostGceInstanceBoostConfigArgs.builder()
                                .id("boost-2")
                                .machineType("n1-standard-2")
                                .poolSize(2)
                                .bootDiskSizeGb(30)
                                .enableNestedVirtualization(true)
                                .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          host:
            gceInstance:
              machineType: e2-standard-4
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
              boostConfigs:
                - id: boost-1
                  machineType: n1-standard-2
                  accelerators:
                    - type: nvidia-tesla-t4
                      count: '1'
                - id: boost-2
                  machineType: n1-standard-2
                  poolSize: 2
                  bootDiskSizeGb: 30
                  enableNestedVirtualization: true
    

    Workstation Config Encryption Key

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultKeyRing = new gcp.kms.KeyRing("default", {
        name: "workstation-cluster",
        location: "us-central1",
    });
    const defaultCryptoKey = new gcp.kms.CryptoKey("default", {
        name: "workstation-cluster",
        keyRing: defaultKeyRing.id,
    });
    const defaultAccount = new gcp.serviceaccount.Account("default", {
        accountId: "my-account",
        displayName: "Service Account",
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        host: {
            gceInstance: {
                machineType: "e2-standard-4",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
                shieldedInstanceConfig: {
                    enableSecureBoot: true,
                    enableVtpm: true,
                },
            },
        },
        encryptionKey: {
            kmsKey: defaultCryptoKey.id,
            kmsKeyServiceAccount: defaultAccount.email,
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_key_ring = gcp.kms.KeyRing("default",
        name="workstation-cluster",
        location="us-central1")
    default_crypto_key = gcp.kms.CryptoKey("default",
        name="workstation-cluster",
        key_ring=default_key_ring.id)
    default_account = gcp.serviceaccount.Account("default",
        account_id="my-account",
        display_name="Service Account")
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        host={
            "gce_instance": {
                "machine_type": "e2-standard-4",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
                "shielded_instance_config": {
                    "enable_secure_boot": True,
                    "enable_vtpm": True,
                },
            },
        },
        encryption_key={
            "kms_key": default_crypto_key.id,
            "kms_key_service_account": default_account.email,
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    			Annotations: pulumi.StringMap{
    				"label-one": pulumi.String("value-one"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		defaultKeyRing, err := kms.NewKeyRing(ctx, "default", &kms.KeyRingArgs{
    			Name:     pulumi.String("workstation-cluster"),
    			Location: pulumi.String("us-central1"),
    		})
    		if err != nil {
    			return err
    		}
    		defaultCryptoKey, err := kms.NewCryptoKey(ctx, "default", &kms.CryptoKeyArgs{
    			Name:    pulumi.String("workstation-cluster"),
    			KeyRing: defaultKeyRing.ID(),
    		})
    		if err != nil {
    			return err
    		}
    		defaultAccount, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{
    			AccountId:   pulumi.String("my-account"),
    			DisplayName: pulumi.String("Service Account"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             pulumi.String("us-central1"),
    			Host: &workstations.WorkstationConfigHostArgs{
    				GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    					MachineType:              pulumi.String("e2-standard-4"),
    					BootDiskSizeGb:           pulumi.Int(35),
    					DisablePublicIpAddresses: pulumi.Bool(true),
    					ShieldedInstanceConfig: &workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{
    						EnableSecureBoot: pulumi.Bool(true),
    						EnableVtpm:       pulumi.Bool(true),
    					},
    				},
    			},
    			EncryptionKey: &workstations.WorkstationConfigEncryptionKeyArgs{
    				KmsKey:               defaultCryptoKey.ID(),
    				KmsKeyServiceAccount: defaultAccount.Email,
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultKeyRing = new Gcp.Kms.KeyRing("default", new()
        {
            Name = "workstation-cluster",
            Location = "us-central1",
        });
    
        var defaultCryptoKey = new Gcp.Kms.CryptoKey("default", new()
        {
            Name = "workstation-cluster",
            KeyRing = defaultKeyRing.Id,
        });
    
        var defaultAccount = new Gcp.ServiceAccount.Account("default", new()
        {
            AccountId = "my-account",
            DisplayName = "Service Account",
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "e2-standard-4",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                    ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs
                    {
                        EnableSecureBoot = true,
                        EnableVtpm = true,
                    },
                },
            },
            EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs
            {
                KmsKey = defaultCryptoKey.Id,
                KmsKeyServiceAccount = defaultAccount.Email,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.kms.KeyRing;
    import com.pulumi.gcp.kms.KeyRingArgs;
    import com.pulumi.gcp.kms.CryptoKey;
    import com.pulumi.gcp.kms.CryptoKeyArgs;
    import com.pulumi.gcp.serviceaccount.Account;
    import com.pulumi.gcp.serviceaccount.AccountArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigEncryptionKeyArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultKeyRing = new KeyRing("defaultKeyRing", KeyRingArgs.builder()
                .name("workstation-cluster")
                .location("us-central1")
                .build());
    
            var defaultCryptoKey = new CryptoKey("defaultCryptoKey", CryptoKeyArgs.builder()
                .name("workstation-cluster")
                .keyRing(defaultKeyRing.id())
                .build());
    
            var defaultAccount = new Account("defaultAccount", AccountArgs.builder()
                .accountId("my-account")
                .displayName("Service Account")
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("e2-standard-4")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()
                            .enableSecureBoot(true)
                            .enableVtpm(true)
                            .build())
                        .build())
                    .build())
                .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()
                    .kmsKey(defaultCryptoKey.id())
                    .kmsKeyServiceAccount(defaultAccount.email())
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultKeyRing:
        type: gcp:kms:KeyRing
        name: default
        properties:
          name: workstation-cluster
          location: us-central1
      defaultCryptoKey:
        type: gcp:kms:CryptoKey
        name: default
        properties:
          name: workstation-cluster
          keyRing: ${defaultKeyRing.id}
      defaultAccount:
        type: gcp:serviceaccount:Account
        name: default
        properties:
          accountId: my-account
          displayName: Service Account
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          host:
            gceInstance:
              machineType: e2-standard-4
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
              shieldedInstanceConfig:
                enableSecureBoot: true
                enableVtpm: true
          encryptionKey:
            kmsKey: ${defaultCryptoKey.id}
            kmsKeyServiceAccount: ${defaultAccount.email}
    

    Workstation Config Allowed Ports

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.compute.Network("default", {
        name: "workstation-cluster",
        autoCreateSubnetworks: false,
    });
    const defaultSubnetwork = new gcp.compute.Subnetwork("default", {
        name: "workstation-cluster",
        ipCidrRange: "10.0.0.0/24",
        region: "us-central1",
        network: _default.name,
    });
    const defaultWorkstationCluster = new gcp.workstations.WorkstationCluster("default", {
        workstationClusterId: "workstation-cluster",
        network: _default.id,
        subnetwork: defaultSubnetwork.id,
        location: "us-central1",
        labels: {
            label: "key",
        },
        annotations: {
            "label-one": "value-one",
        },
    });
    const defaultWorkstationConfig = new gcp.workstations.WorkstationConfig("default", {
        workstationConfigId: "workstation-config",
        workstationClusterId: defaultWorkstationCluster.workstationClusterId,
        location: "us-central1",
        host: {
            gceInstance: {
                machineType: "e2-standard-4",
                bootDiskSizeGb: 35,
                disablePublicIpAddresses: true,
            },
        },
        allowedPorts: [
            {
                first: 80,
                last: 80,
            },
            {
                first: 22,
                last: 22,
            },
            {
                first: 1024,
                last: 65535,
            },
        ],
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.Network("default",
        name="workstation-cluster",
        auto_create_subnetworks=False)
    default_subnetwork = gcp.compute.Subnetwork("default",
        name="workstation-cluster",
        ip_cidr_range="10.0.0.0/24",
        region="us-central1",
        network=default.name)
    default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
        workstation_cluster_id="workstation-cluster",
        network=default.id,
        subnetwork=default_subnetwork.id,
        location="us-central1",
        labels={
            "label": "key",
        },
        annotations={
            "label-one": "value-one",
        })
    default_workstation_config = gcp.workstations.WorkstationConfig("default",
        workstation_config_id="workstation-config",
        workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
        location="us-central1",
        host={
            "gce_instance": {
                "machine_type": "e2-standard-4",
                "boot_disk_size_gb": 35,
                "disable_public_ip_addresses": True,
            },
        },
        allowed_ports=[
            {
                "first": 80,
                "last": 80,
            },
            {
                "first": 22,
                "last": 22,
            },
            {
                "first": 1024,
                "last": 65535,
            },
        ])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{
    			Name:                  pulumi.String("workstation-cluster"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		defaultSubnetwork, err := compute.NewSubnetwork(ctx, "default", &compute.SubnetworkArgs{
    			Name:        pulumi.String("workstation-cluster"),
    			IpCidrRange: pulumi.String("10.0.0.0/24"),
    			Region:      pulumi.String("us-central1"),
    			Network:     _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, "default", &workstations.WorkstationClusterArgs{
    			WorkstationClusterId: pulumi.String("workstation-cluster"),
    			Network:              _default.ID(),
    			Subnetwork:           defaultSubnetwork.ID(),
    			Location:             pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    			Annotations: pulumi.StringMap{
    				"label-one": pulumi.String("value-one"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = workstations.NewWorkstationConfig(ctx, "default", &workstations.WorkstationConfigArgs{
    			WorkstationConfigId:  pulumi.String("workstation-config"),
    			WorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,
    			Location:             pulumi.String("us-central1"),
    			Host: &workstations.WorkstationConfigHostArgs{
    				GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    					MachineType:              pulumi.String("e2-standard-4"),
    					BootDiskSizeGb:           pulumi.Int(35),
    					DisablePublicIpAddresses: pulumi.Bool(true),
    				},
    			},
    			AllowedPorts: workstations.WorkstationConfigAllowedPortArray{
    				&workstations.WorkstationConfigAllowedPortArgs{
    					First: pulumi.Int(80),
    					Last:  pulumi.Int(80),
    				},
    				&workstations.WorkstationConfigAllowedPortArgs{
    					First: pulumi.Int(22),
    					Last:  pulumi.Int(22),
    				},
    				&workstations.WorkstationConfigAllowedPortArgs{
    					First: pulumi.Int(1024),
    					Last:  pulumi.Int(65535),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Compute.Network("default", new()
        {
            Name = "workstation-cluster",
            AutoCreateSubnetworks = false,
        });
    
        var defaultSubnetwork = new Gcp.Compute.Subnetwork("default", new()
        {
            Name = "workstation-cluster",
            IpCidrRange = "10.0.0.0/24",
            Region = "us-central1",
            Network = @default.Name,
        });
    
        var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster("default", new()
        {
            WorkstationClusterId = "workstation-cluster",
            Network = @default.Id,
            Subnetwork = defaultSubnetwork.Id,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
            Annotations = 
            {
                { "label-one", "value-one" },
            },
        });
    
        var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig("default", new()
        {
            WorkstationConfigId = "workstation-config",
            WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,
            Location = "us-central1",
            Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
            {
                GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
                {
                    MachineType = "e2-standard-4",
                    BootDiskSizeGb = 35,
                    DisablePublicIpAddresses = true,
                },
            },
            AllowedPorts = new[]
            {
                new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs
                {
                    First = 80,
                    Last = 80,
                },
                new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs
                {
                    First = 22,
                    Last = 22,
                },
                new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs
                {
                    First = 1024,
                    Last = 65535,
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.workstations.WorkstationCluster;
    import com.pulumi.gcp.workstations.WorkstationClusterArgs;
    import com.pulumi.gcp.workstations.WorkstationConfig;
    import com.pulumi.gcp.workstations.WorkstationConfigArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;
    import com.pulumi.gcp.workstations.inputs.WorkstationConfigAllowedPortArgs;
    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 default_ = new Network("default", NetworkArgs.builder()
                .name("workstation-cluster")
                .autoCreateSubnetworks(false)
                .build());
    
            var defaultSubnetwork = new Subnetwork("defaultSubnetwork", SubnetworkArgs.builder()
                .name("workstation-cluster")
                .ipCidrRange("10.0.0.0/24")
                .region("us-central1")
                .network(default_.name())
                .build());
    
            var defaultWorkstationCluster = new WorkstationCluster("defaultWorkstationCluster", WorkstationClusterArgs.builder()
                .workstationClusterId("workstation-cluster")
                .network(default_.id())
                .subnetwork(defaultSubnetwork.id())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .annotations(Map.of("label-one", "value-one"))
                .build());
    
            var defaultWorkstationConfig = new WorkstationConfig("defaultWorkstationConfig", WorkstationConfigArgs.builder()
                .workstationConfigId("workstation-config")
                .workstationClusterId(defaultWorkstationCluster.workstationClusterId())
                .location("us-central1")
                .host(WorkstationConfigHostArgs.builder()
                    .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                        .machineType("e2-standard-4")
                        .bootDiskSizeGb(35)
                        .disablePublicIpAddresses(true)
                        .build())
                    .build())
                .allowedPorts(            
                    WorkstationConfigAllowedPortArgs.builder()
                        .first(80)
                        .last(80)
                        .build(),
                    WorkstationConfigAllowedPortArgs.builder()
                        .first(22)
                        .last(22)
                        .build(),
                    WorkstationConfigAllowedPortArgs.builder()
                        .first(1024)
                        .last(65535)
                        .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:compute:Network
        properties:
          name: workstation-cluster
          autoCreateSubnetworks: false
      defaultSubnetwork:
        type: gcp:compute:Subnetwork
        name: default
        properties:
          name: workstation-cluster
          ipCidrRange: 10.0.0.0/24
          region: us-central1
          network: ${default.name}
      defaultWorkstationCluster:
        type: gcp:workstations:WorkstationCluster
        name: default
        properties:
          workstationClusterId: workstation-cluster
          network: ${default.id}
          subnetwork: ${defaultSubnetwork.id}
          location: us-central1
          labels:
            label: key
          annotations:
            label-one: value-one
      defaultWorkstationConfig:
        type: gcp:workstations:WorkstationConfig
        name: default
        properties:
          workstationConfigId: workstation-config
          workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}
          location: us-central1
          host:
            gceInstance:
              machineType: e2-standard-4
              bootDiskSizeGb: 35
              disablePublicIpAddresses: true
          allowedPorts:
            - first: 80
              last: 80
            - first: 22
              last: 22
            - first: 1024
              last: 65535
    

    Create WorkstationConfig Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new WorkstationConfig(name: string, args: WorkstationConfigArgs, opts?: CustomResourceOptions);
    @overload
    def WorkstationConfig(resource_name: str,
                          args: WorkstationConfigArgs,
                          opts: Optional[ResourceOptions] = None)
    
    @overload
    def WorkstationConfig(resource_name: str,
                          opts: Optional[ResourceOptions] = None,
                          location: Optional[str] = None,
                          workstation_config_id: Optional[str] = None,
                          workstation_cluster_id: Optional[str] = None,
                          labels: Optional[Mapping[str, str]] = None,
                          max_usable_workstations: Optional[int] = None,
                          enable_audit_agent: Optional[bool] = None,
                          encryption_key: Optional[WorkstationConfigEncryptionKeyArgs] = None,
                          ephemeral_directories: Optional[Sequence[WorkstationConfigEphemeralDirectoryArgs]] = None,
                          host: Optional[WorkstationConfigHostArgs] = None,
                          idle_timeout: Optional[str] = None,
                          allowed_ports: Optional[Sequence[WorkstationConfigAllowedPortArgs]] = None,
                          disable_tcp_connections: Optional[bool] = None,
                          display_name: Optional[str] = None,
                          persistent_directories: Optional[Sequence[WorkstationConfigPersistentDirectoryArgs]] = None,
                          project: Optional[str] = None,
                          readiness_checks: Optional[Sequence[WorkstationConfigReadinessCheckArgs]] = None,
                          replica_zones: Optional[Sequence[str]] = None,
                          running_timeout: Optional[str] = None,
                          container: Optional[WorkstationConfigContainerArgs] = None,
                          annotations: Optional[Mapping[str, str]] = None)
    func NewWorkstationConfig(ctx *Context, name string, args WorkstationConfigArgs, opts ...ResourceOption) (*WorkstationConfig, error)
    public WorkstationConfig(string name, WorkstationConfigArgs args, CustomResourceOptions? opts = null)
    public WorkstationConfig(String name, WorkstationConfigArgs args)
    public WorkstationConfig(String name, WorkstationConfigArgs args, CustomResourceOptions options)
    
    type: gcp:workstations:WorkstationConfig
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args WorkstationConfigArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args WorkstationConfigArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args WorkstationConfigArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args WorkstationConfigArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args WorkstationConfigArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var workstationConfigResource = new Gcp.Workstations.WorkstationConfig("workstationConfigResource", new()
    {
        Location = "string",
        WorkstationConfigId = "string",
        WorkstationClusterId = "string",
        Labels = 
        {
            { "string", "string" },
        },
        MaxUsableWorkstations = 0,
        EnableAuditAgent = false,
        EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs
        {
            KmsKey = "string",
            KmsKeyServiceAccount = "string",
        },
        EphemeralDirectories = new[]
        {
            new Gcp.Workstations.Inputs.WorkstationConfigEphemeralDirectoryArgs
            {
                GcePd = new Gcp.Workstations.Inputs.WorkstationConfigEphemeralDirectoryGcePdArgs
                {
                    DiskType = "string",
                    ReadOnly = false,
                    SourceImage = "string",
                    SourceSnapshot = "string",
                },
                MountPath = "string",
            },
        },
        Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs
        {
            GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs
            {
                Accelerators = new[]
                {
                    new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs
                    {
                        Count = 0,
                        Type = "string",
                    },
                },
                BoostConfigs = new[]
                {
                    new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs
                    {
                        Id = "string",
                        Accelerators = new[]
                        {
                            new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs
                            {
                                Count = 0,
                                Type = "string",
                            },
                        },
                        BootDiskSizeGb = 0,
                        EnableNestedVirtualization = false,
                        MachineType = "string",
                        PoolSize = 0,
                    },
                },
                BootDiskSizeGb = 0,
                ConfidentialInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs
                {
                    EnableConfidentialCompute = false,
                },
                DisablePublicIpAddresses = false,
                DisableSsh = false,
                EnableNestedVirtualization = false,
                MachineType = "string",
                PoolSize = 0,
                ServiceAccount = "string",
                ServiceAccountScopes = new[]
                {
                    "string",
                },
                ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs
                {
                    EnableIntegrityMonitoring = false,
                    EnableSecureBoot = false,
                    EnableVtpm = false,
                },
                Tags = new[]
                {
                    "string",
                },
                VmTags = 
                {
                    { "string", "string" },
                },
            },
        },
        IdleTimeout = "string",
        AllowedPorts = new[]
        {
            new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs
            {
                First = 0,
                Last = 0,
            },
        },
        DisableTcpConnections = false,
        DisplayName = "string",
        PersistentDirectories = new[]
        {
            new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs
            {
                GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs
                {
                    DiskType = "string",
                    FsType = "string",
                    ReclaimPolicy = "string",
                    SizeGb = 0,
                    SourceSnapshot = "string",
                },
                MountPath = "string",
            },
        },
        Project = "string",
        ReadinessChecks = new[]
        {
            new Gcp.Workstations.Inputs.WorkstationConfigReadinessCheckArgs
            {
                Path = "string",
                Port = 0,
            },
        },
        ReplicaZones = new[]
        {
            "string",
        },
        RunningTimeout = "string",
        Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs
        {
            Args = new[]
            {
                "string",
            },
            Commands = new[]
            {
                "string",
            },
            Env = 
            {
                { "string", "string" },
            },
            Image = "string",
            RunAsUser = 0,
            WorkingDir = "string",
        },
        Annotations = 
        {
            { "string", "string" },
        },
    });
    
    example, err := workstations.NewWorkstationConfig(ctx, "workstationConfigResource", &workstations.WorkstationConfigArgs{
    	Location:             pulumi.String("string"),
    	WorkstationConfigId:  pulumi.String("string"),
    	WorkstationClusterId: pulumi.String("string"),
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	MaxUsableWorkstations: pulumi.Int(0),
    	EnableAuditAgent:      pulumi.Bool(false),
    	EncryptionKey: &workstations.WorkstationConfigEncryptionKeyArgs{
    		KmsKey:               pulumi.String("string"),
    		KmsKeyServiceAccount: pulumi.String("string"),
    	},
    	EphemeralDirectories: workstations.WorkstationConfigEphemeralDirectoryArray{
    		&workstations.WorkstationConfigEphemeralDirectoryArgs{
    			GcePd: &workstations.WorkstationConfigEphemeralDirectoryGcePdArgs{
    				DiskType:       pulumi.String("string"),
    				ReadOnly:       pulumi.Bool(false),
    				SourceImage:    pulumi.String("string"),
    				SourceSnapshot: pulumi.String("string"),
    			},
    			MountPath: pulumi.String("string"),
    		},
    	},
    	Host: &workstations.WorkstationConfigHostArgs{
    		GceInstance: &workstations.WorkstationConfigHostGceInstanceArgs{
    			Accelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{
    				&workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{
    					Count: pulumi.Int(0),
    					Type:  pulumi.String("string"),
    				},
    			},
    			BoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{
    				&workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{
    					Id: pulumi.String("string"),
    					Accelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{
    						&workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{
    							Count: pulumi.Int(0),
    							Type:  pulumi.String("string"),
    						},
    					},
    					BootDiskSizeGb:             pulumi.Int(0),
    					EnableNestedVirtualization: pulumi.Bool(false),
    					MachineType:                pulumi.String("string"),
    					PoolSize:                   pulumi.Int(0),
    				},
    			},
    			BootDiskSizeGb: pulumi.Int(0),
    			ConfidentialInstanceConfig: &workstations.WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs{
    				EnableConfidentialCompute: pulumi.Bool(false),
    			},
    			DisablePublicIpAddresses:   pulumi.Bool(false),
    			DisableSsh:                 pulumi.Bool(false),
    			EnableNestedVirtualization: pulumi.Bool(false),
    			MachineType:                pulumi.String("string"),
    			PoolSize:                   pulumi.Int(0),
    			ServiceAccount:             pulumi.String("string"),
    			ServiceAccountScopes: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			ShieldedInstanceConfig: &workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{
    				EnableIntegrityMonitoring: pulumi.Bool(false),
    				EnableSecureBoot:          pulumi.Bool(false),
    				EnableVtpm:                pulumi.Bool(false),
    			},
    			Tags: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			VmTags: pulumi.StringMap{
    				"string": pulumi.String("string"),
    			},
    		},
    	},
    	IdleTimeout: pulumi.String("string"),
    	AllowedPorts: workstations.WorkstationConfigAllowedPortArray{
    		&workstations.WorkstationConfigAllowedPortArgs{
    			First: pulumi.Int(0),
    			Last:  pulumi.Int(0),
    		},
    	},
    	DisableTcpConnections: pulumi.Bool(false),
    	DisplayName:           pulumi.String("string"),
    	PersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{
    		&workstations.WorkstationConfigPersistentDirectoryArgs{
    			GcePd: &workstations.WorkstationConfigPersistentDirectoryGcePdArgs{
    				DiskType:       pulumi.String("string"),
    				FsType:         pulumi.String("string"),
    				ReclaimPolicy:  pulumi.String("string"),
    				SizeGb:         pulumi.Int(0),
    				SourceSnapshot: pulumi.String("string"),
    			},
    			MountPath: pulumi.String("string"),
    		},
    	},
    	Project: pulumi.String("string"),
    	ReadinessChecks: workstations.WorkstationConfigReadinessCheckArray{
    		&workstations.WorkstationConfigReadinessCheckArgs{
    			Path: pulumi.String("string"),
    			Port: pulumi.Int(0),
    		},
    	},
    	ReplicaZones: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	RunningTimeout: pulumi.String("string"),
    	Container: &workstations.WorkstationConfigContainerArgs{
    		Args: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		Commands: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		Env: pulumi.StringMap{
    			"string": pulumi.String("string"),
    		},
    		Image:      pulumi.String("string"),
    		RunAsUser:  pulumi.Int(0),
    		WorkingDir: pulumi.String("string"),
    	},
    	Annotations: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    })
    
    var workstationConfigResource = new WorkstationConfig("workstationConfigResource", WorkstationConfigArgs.builder()
        .location("string")
        .workstationConfigId("string")
        .workstationClusterId("string")
        .labels(Map.of("string", "string"))
        .maxUsableWorkstations(0)
        .enableAuditAgent(false)
        .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()
            .kmsKey("string")
            .kmsKeyServiceAccount("string")
            .build())
        .ephemeralDirectories(WorkstationConfigEphemeralDirectoryArgs.builder()
            .gcePd(WorkstationConfigEphemeralDirectoryGcePdArgs.builder()
                .diskType("string")
                .readOnly(false)
                .sourceImage("string")
                .sourceSnapshot("string")
                .build())
            .mountPath("string")
            .build())
        .host(WorkstationConfigHostArgs.builder()
            .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()
                .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()
                    .count(0)
                    .type("string")
                    .build())
                .boostConfigs(WorkstationConfigHostGceInstanceBoostConfigArgs.builder()
                    .id("string")
                    .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()
                        .count(0)
                        .type("string")
                        .build())
                    .bootDiskSizeGb(0)
                    .enableNestedVirtualization(false)
                    .machineType("string")
                    .poolSize(0)
                    .build())
                .bootDiskSizeGb(0)
                .confidentialInstanceConfig(WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs.builder()
                    .enableConfidentialCompute(false)
                    .build())
                .disablePublicIpAddresses(false)
                .disableSsh(false)
                .enableNestedVirtualization(false)
                .machineType("string")
                .poolSize(0)
                .serviceAccount("string")
                .serviceAccountScopes("string")
                .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()
                    .enableIntegrityMonitoring(false)
                    .enableSecureBoot(false)
                    .enableVtpm(false)
                    .build())
                .tags("string")
                .vmTags(Map.of("string", "string"))
                .build())
            .build())
        .idleTimeout("string")
        .allowedPorts(WorkstationConfigAllowedPortArgs.builder()
            .first(0)
            .last(0)
            .build())
        .disableTcpConnections(false)
        .displayName("string")
        .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()
            .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()
                .diskType("string")
                .fsType("string")
                .reclaimPolicy("string")
                .sizeGb(0)
                .sourceSnapshot("string")
                .build())
            .mountPath("string")
            .build())
        .project("string")
        .readinessChecks(WorkstationConfigReadinessCheckArgs.builder()
            .path("string")
            .port(0)
            .build())
        .replicaZones("string")
        .runningTimeout("string")
        .container(WorkstationConfigContainerArgs.builder()
            .args("string")
            .commands("string")
            .env(Map.of("string", "string"))
            .image("string")
            .runAsUser(0)
            .workingDir("string")
            .build())
        .annotations(Map.of("string", "string"))
        .build());
    
    workstation_config_resource = gcp.workstations.WorkstationConfig("workstationConfigResource",
        location="string",
        workstation_config_id="string",
        workstation_cluster_id="string",
        labels={
            "string": "string",
        },
        max_usable_workstations=0,
        enable_audit_agent=False,
        encryption_key={
            "kms_key": "string",
            "kms_key_service_account": "string",
        },
        ephemeral_directories=[{
            "gce_pd": {
                "disk_type": "string",
                "read_only": False,
                "source_image": "string",
                "source_snapshot": "string",
            },
            "mount_path": "string",
        }],
        host={
            "gce_instance": {
                "accelerators": [{
                    "count": 0,
                    "type": "string",
                }],
                "boost_configs": [{
                    "id": "string",
                    "accelerators": [{
                        "count": 0,
                        "type": "string",
                    }],
                    "boot_disk_size_gb": 0,
                    "enable_nested_virtualization": False,
                    "machine_type": "string",
                    "pool_size": 0,
                }],
                "boot_disk_size_gb": 0,
                "confidential_instance_config": {
                    "enable_confidential_compute": False,
                },
                "disable_public_ip_addresses": False,
                "disable_ssh": False,
                "enable_nested_virtualization": False,
                "machine_type": "string",
                "pool_size": 0,
                "service_account": "string",
                "service_account_scopes": ["string"],
                "shielded_instance_config": {
                    "enable_integrity_monitoring": False,
                    "enable_secure_boot": False,
                    "enable_vtpm": False,
                },
                "tags": ["string"],
                "vm_tags": {
                    "string": "string",
                },
            },
        },
        idle_timeout="string",
        allowed_ports=[{
            "first": 0,
            "last": 0,
        }],
        disable_tcp_connections=False,
        display_name="string",
        persistent_directories=[{
            "gce_pd": {
                "disk_type": "string",
                "fs_type": "string",
                "reclaim_policy": "string",
                "size_gb": 0,
                "source_snapshot": "string",
            },
            "mount_path": "string",
        }],
        project="string",
        readiness_checks=[{
            "path": "string",
            "port": 0,
        }],
        replica_zones=["string"],
        running_timeout="string",
        container={
            "args": ["string"],
            "commands": ["string"],
            "env": {
                "string": "string",
            },
            "image": "string",
            "run_as_user": 0,
            "working_dir": "string",
        },
        annotations={
            "string": "string",
        })
    
    const workstationConfigResource = new gcp.workstations.WorkstationConfig("workstationConfigResource", {
        location: "string",
        workstationConfigId: "string",
        workstationClusterId: "string",
        labels: {
            string: "string",
        },
        maxUsableWorkstations: 0,
        enableAuditAgent: false,
        encryptionKey: {
            kmsKey: "string",
            kmsKeyServiceAccount: "string",
        },
        ephemeralDirectories: [{
            gcePd: {
                diskType: "string",
                readOnly: false,
                sourceImage: "string",
                sourceSnapshot: "string",
            },
            mountPath: "string",
        }],
        host: {
            gceInstance: {
                accelerators: [{
                    count: 0,
                    type: "string",
                }],
                boostConfigs: [{
                    id: "string",
                    accelerators: [{
                        count: 0,
                        type: "string",
                    }],
                    bootDiskSizeGb: 0,
                    enableNestedVirtualization: false,
                    machineType: "string",
                    poolSize: 0,
                }],
                bootDiskSizeGb: 0,
                confidentialInstanceConfig: {
                    enableConfidentialCompute: false,
                },
                disablePublicIpAddresses: false,
                disableSsh: false,
                enableNestedVirtualization: false,
                machineType: "string",
                poolSize: 0,
                serviceAccount: "string",
                serviceAccountScopes: ["string"],
                shieldedInstanceConfig: {
                    enableIntegrityMonitoring: false,
                    enableSecureBoot: false,
                    enableVtpm: false,
                },
                tags: ["string"],
                vmTags: {
                    string: "string",
                },
            },
        },
        idleTimeout: "string",
        allowedPorts: [{
            first: 0,
            last: 0,
        }],
        disableTcpConnections: false,
        displayName: "string",
        persistentDirectories: [{
            gcePd: {
                diskType: "string",
                fsType: "string",
                reclaimPolicy: "string",
                sizeGb: 0,
                sourceSnapshot: "string",
            },
            mountPath: "string",
        }],
        project: "string",
        readinessChecks: [{
            path: "string",
            port: 0,
        }],
        replicaZones: ["string"],
        runningTimeout: "string",
        container: {
            args: ["string"],
            commands: ["string"],
            env: {
                string: "string",
            },
            image: "string",
            runAsUser: 0,
            workingDir: "string",
        },
        annotations: {
            string: "string",
        },
    });
    
    type: gcp:workstations:WorkstationConfig
    properties:
        allowedPorts:
            - first: 0
              last: 0
        annotations:
            string: string
        container:
            args:
                - string
            commands:
                - string
            env:
                string: string
            image: string
            runAsUser: 0
            workingDir: string
        disableTcpConnections: false
        displayName: string
        enableAuditAgent: false
        encryptionKey:
            kmsKey: string
            kmsKeyServiceAccount: string
        ephemeralDirectories:
            - gcePd:
                diskType: string
                readOnly: false
                sourceImage: string
                sourceSnapshot: string
              mountPath: string
        host:
            gceInstance:
                accelerators:
                    - count: 0
                      type: string
                boostConfigs:
                    - accelerators:
                        - count: 0
                          type: string
                      bootDiskSizeGb: 0
                      enableNestedVirtualization: false
                      id: string
                      machineType: string
                      poolSize: 0
                bootDiskSizeGb: 0
                confidentialInstanceConfig:
                    enableConfidentialCompute: false
                disablePublicIpAddresses: false
                disableSsh: false
                enableNestedVirtualization: false
                machineType: string
                poolSize: 0
                serviceAccount: string
                serviceAccountScopes:
                    - string
                shieldedInstanceConfig:
                    enableIntegrityMonitoring: false
                    enableSecureBoot: false
                    enableVtpm: false
                tags:
                    - string
                vmTags:
                    string: string
        idleTimeout: string
        labels:
            string: string
        location: string
        maxUsableWorkstations: 0
        persistentDirectories:
            - gcePd:
                diskType: string
                fsType: string
                reclaimPolicy: string
                sizeGb: 0
                sourceSnapshot: string
              mountPath: string
        project: string
        readinessChecks:
            - path: string
              port: 0
        replicaZones:
            - string
        runningTimeout: string
        workstationClusterId: string
        workstationConfigId: string
    

    WorkstationConfig Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The WorkstationConfig resource accepts the following input properties:

    Location string
    The location where the workstation cluster config should reside.


    WorkstationClusterId string
    The ID of the parent workstation cluster.
    WorkstationConfigId string
    The ID to be assigned to the workstation cluster config.
    AllowedPorts List<WorkstationConfigAllowedPort>
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    Annotations Dictionary<string, string>
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    Container WorkstationConfigContainer
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    DisableTcpConnections bool
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    DisplayName string
    Human-readable name for this resource.
    EnableAuditAgent bool
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    EncryptionKey WorkstationConfigEncryptionKey
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    EphemeralDirectories List<WorkstationConfigEphemeralDirectory>
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    Host WorkstationConfigHost
    Runtime host for a workstation. Structure is documented below.
    IdleTimeout string
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    Labels Dictionary<string, string>
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    MaxUsableWorkstations int
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    PersistentDirectories List<WorkstationConfigPersistentDirectory>
    Directories to persist across workstation sessions. Structure is documented below.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    ReadinessChecks List<WorkstationConfigReadinessCheck>
    Readiness checks to be performed on a workstation. Structure is documented below.
    ReplicaZones List<string>
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    RunningTimeout string
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    Location string
    The location where the workstation cluster config should reside.


    WorkstationClusterId string
    The ID of the parent workstation cluster.
    WorkstationConfigId string
    The ID to be assigned to the workstation cluster config.
    AllowedPorts []WorkstationConfigAllowedPortArgs
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    Annotations map[string]string
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    Container WorkstationConfigContainerArgs
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    DisableTcpConnections bool
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    DisplayName string
    Human-readable name for this resource.
    EnableAuditAgent bool
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    EncryptionKey WorkstationConfigEncryptionKeyArgs
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    EphemeralDirectories []WorkstationConfigEphemeralDirectoryArgs
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    Host WorkstationConfigHostArgs
    Runtime host for a workstation. Structure is documented below.
    IdleTimeout string
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    Labels map[string]string
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    MaxUsableWorkstations int
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    PersistentDirectories []WorkstationConfigPersistentDirectoryArgs
    Directories to persist across workstation sessions. Structure is documented below.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    ReadinessChecks []WorkstationConfigReadinessCheckArgs
    Readiness checks to be performed on a workstation. Structure is documented below.
    ReplicaZones []string
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    RunningTimeout string
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    location String
    The location where the workstation cluster config should reside.


    workstationClusterId String
    The ID of the parent workstation cluster.
    workstationConfigId String
    The ID to be assigned to the workstation cluster config.
    allowedPorts List<WorkstationConfigAllowedPort>
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations Map<String,String>
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    container WorkstationConfigContainer
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    disableTcpConnections Boolean
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    displayName String
    Human-readable name for this resource.
    enableAuditAgent Boolean
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryptionKey WorkstationConfigEncryptionKey
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeralDirectories List<WorkstationConfigEphemeralDirectory>
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    host WorkstationConfigHost
    Runtime host for a workstation. Structure is documented below.
    idleTimeout String
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels Map<String,String>
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    maxUsableWorkstations Integer
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    persistentDirectories List<WorkstationConfigPersistentDirectory>
    Directories to persist across workstation sessions. Structure is documented below.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    readinessChecks List<WorkstationConfigReadinessCheck>
    Readiness checks to be performed on a workstation. Structure is documented below.
    replicaZones List<String>
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    runningTimeout String
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    location string
    The location where the workstation cluster config should reside.


    workstationClusterId string
    The ID of the parent workstation cluster.
    workstationConfigId string
    The ID to be assigned to the workstation cluster config.
    allowedPorts WorkstationConfigAllowedPort[]
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations {[key: string]: string}
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    container WorkstationConfigContainer
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    disableTcpConnections boolean
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    displayName string
    Human-readable name for this resource.
    enableAuditAgent boolean
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryptionKey WorkstationConfigEncryptionKey
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeralDirectories WorkstationConfigEphemeralDirectory[]
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    host WorkstationConfigHost
    Runtime host for a workstation. Structure is documented below.
    idleTimeout string
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels {[key: string]: string}
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    maxUsableWorkstations number
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    persistentDirectories WorkstationConfigPersistentDirectory[]
    Directories to persist across workstation sessions. Structure is documented below.
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    readinessChecks WorkstationConfigReadinessCheck[]
    Readiness checks to be performed on a workstation. Structure is documented below.
    replicaZones string[]
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    runningTimeout string
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    location str
    The location where the workstation cluster config should reside.


    workstation_cluster_id str
    The ID of the parent workstation cluster.
    workstation_config_id str
    The ID to be assigned to the workstation cluster config.
    allowed_ports Sequence[WorkstationConfigAllowedPortArgs]
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations Mapping[str, str]
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    container WorkstationConfigContainerArgs
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    disable_tcp_connections bool
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    display_name str
    Human-readable name for this resource.
    enable_audit_agent bool
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryption_key WorkstationConfigEncryptionKeyArgs
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeral_directories Sequence[WorkstationConfigEphemeralDirectoryArgs]
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    host WorkstationConfigHostArgs
    Runtime host for a workstation. Structure is documented below.
    idle_timeout str
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels Mapping[str, str]
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    max_usable_workstations int
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    persistent_directories Sequence[WorkstationConfigPersistentDirectoryArgs]
    Directories to persist across workstation sessions. Structure is documented below.
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    readiness_checks Sequence[WorkstationConfigReadinessCheckArgs]
    Readiness checks to be performed on a workstation. Structure is documented below.
    replica_zones Sequence[str]
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    running_timeout str
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    location String
    The location where the workstation cluster config should reside.


    workstationClusterId String
    The ID of the parent workstation cluster.
    workstationConfigId String
    The ID to be assigned to the workstation cluster config.
    allowedPorts List<Property Map>
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations Map<String>
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    container Property Map
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    disableTcpConnections Boolean
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    displayName String
    Human-readable name for this resource.
    enableAuditAgent Boolean
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryptionKey Property Map
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeralDirectories List<Property Map>
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    host Property Map
    Runtime host for a workstation. Structure is documented below.
    idleTimeout String
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels Map<String>
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    maxUsableWorkstations Number
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    persistentDirectories List<Property Map>
    Directories to persist across workstation sessions. Structure is documented below.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    readinessChecks List<Property Map>
    Readiness checks to be performed on a workstation. Structure is documented below.
    replicaZones List<String>
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    runningTimeout String
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

    Outputs

    All input properties are implicitly available as output properties. Additionally, the WorkstationConfig resource produces the following output properties:

    Conditions List<WorkstationConfigCondition>
    Status conditions describing the current resource state. Structure is documented below.
    CreateTime string
    Time when this resource was created.
    Degraded bool
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    EffectiveAnnotations Dictionary<string, string>
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Etag string
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    Full name of this resource.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    Uid string
    The system-generated UID of the resource.
    Conditions []WorkstationConfigCondition
    Status conditions describing the current resource state. Structure is documented below.
    CreateTime string
    Time when this resource was created.
    Degraded bool
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    EffectiveAnnotations map[string]string
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Etag string
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    Full name of this resource.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    Uid string
    The system-generated UID of the resource.
    conditions List<WorkstationConfigCondition>
    Status conditions describing the current resource state. Structure is documented below.
    createTime String
    Time when this resource was created.
    degraded Boolean
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    effectiveAnnotations Map<String,String>
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    etag String
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    Full name of this resource.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    uid String
    The system-generated UID of the resource.
    conditions WorkstationConfigCondition[]
    Status conditions describing the current resource state. Structure is documented below.
    createTime string
    Time when this resource was created.
    degraded boolean
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    effectiveAnnotations {[key: string]: string}
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    etag string
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    id string
    The provider-assigned unique ID for this managed resource.
    name string
    Full name of this resource.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    uid string
    The system-generated UID of the resource.
    conditions Sequence[WorkstationConfigCondition]
    Status conditions describing the current resource state. Structure is documented below.
    create_time str
    Time when this resource was created.
    degraded bool
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    effective_annotations Mapping[str, str]
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    etag str
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    id str
    The provider-assigned unique ID for this managed resource.
    name str
    Full name of this resource.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    uid str
    The system-generated UID of the resource.
    conditions List<Property Map>
    Status conditions describing the current resource state. Structure is documented below.
    createTime String
    Time when this resource was created.
    degraded Boolean
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    effectiveAnnotations Map<String>
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    etag String
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    Full name of this resource.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    uid String
    The system-generated UID of the resource.

    Look up Existing WorkstationConfig Resource

    Get an existing WorkstationConfig resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: WorkstationConfigState, opts?: CustomResourceOptions): WorkstationConfig
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            allowed_ports: Optional[Sequence[WorkstationConfigAllowedPortArgs]] = None,
            annotations: Optional[Mapping[str, str]] = None,
            conditions: Optional[Sequence[WorkstationConfigConditionArgs]] = None,
            container: Optional[WorkstationConfigContainerArgs] = None,
            create_time: Optional[str] = None,
            degraded: Optional[bool] = None,
            disable_tcp_connections: Optional[bool] = None,
            display_name: Optional[str] = None,
            effective_annotations: Optional[Mapping[str, str]] = None,
            effective_labels: Optional[Mapping[str, str]] = None,
            enable_audit_agent: Optional[bool] = None,
            encryption_key: Optional[WorkstationConfigEncryptionKeyArgs] = None,
            ephemeral_directories: Optional[Sequence[WorkstationConfigEphemeralDirectoryArgs]] = None,
            etag: Optional[str] = None,
            host: Optional[WorkstationConfigHostArgs] = None,
            idle_timeout: Optional[str] = None,
            labels: Optional[Mapping[str, str]] = None,
            location: Optional[str] = None,
            max_usable_workstations: Optional[int] = None,
            name: Optional[str] = None,
            persistent_directories: Optional[Sequence[WorkstationConfigPersistentDirectoryArgs]] = None,
            project: Optional[str] = None,
            pulumi_labels: Optional[Mapping[str, str]] = None,
            readiness_checks: Optional[Sequence[WorkstationConfigReadinessCheckArgs]] = None,
            replica_zones: Optional[Sequence[str]] = None,
            running_timeout: Optional[str] = None,
            uid: Optional[str] = None,
            workstation_cluster_id: Optional[str] = None,
            workstation_config_id: Optional[str] = None) -> WorkstationConfig
    func GetWorkstationConfig(ctx *Context, name string, id IDInput, state *WorkstationConfigState, opts ...ResourceOption) (*WorkstationConfig, error)
    public static WorkstationConfig Get(string name, Input<string> id, WorkstationConfigState? state, CustomResourceOptions? opts = null)
    public static WorkstationConfig get(String name, Output<String> id, WorkstationConfigState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AllowedPorts List<WorkstationConfigAllowedPort>
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    Annotations Dictionary<string, string>
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    Conditions List<WorkstationConfigCondition>
    Status conditions describing the current resource state. Structure is documented below.
    Container WorkstationConfigContainer
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    CreateTime string
    Time when this resource was created.
    Degraded bool
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    DisableTcpConnections bool
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    DisplayName string
    Human-readable name for this resource.
    EffectiveAnnotations Dictionary<string, string>
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EnableAuditAgent bool
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    EncryptionKey WorkstationConfigEncryptionKey
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    EphemeralDirectories List<WorkstationConfigEphemeralDirectory>
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    Etag string
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    Host WorkstationConfigHost
    Runtime host for a workstation. Structure is documented below.
    IdleTimeout string
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    Labels Dictionary<string, string>
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    Location string
    The location where the workstation cluster config should reside.


    MaxUsableWorkstations int
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    Name string
    Full name of this resource.
    PersistentDirectories List<WorkstationConfigPersistentDirectory>
    Directories to persist across workstation sessions. Structure is documented below.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    ReadinessChecks List<WorkstationConfigReadinessCheck>
    Readiness checks to be performed on a workstation. Structure is documented below.
    ReplicaZones List<string>
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    RunningTimeout string
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    Uid string
    The system-generated UID of the resource.
    WorkstationClusterId string
    The ID of the parent workstation cluster.
    WorkstationConfigId string
    The ID to be assigned to the workstation cluster config.
    AllowedPorts []WorkstationConfigAllowedPortArgs
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    Annotations map[string]string
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    Conditions []WorkstationConfigConditionArgs
    Status conditions describing the current resource state. Structure is documented below.
    Container WorkstationConfigContainerArgs
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    CreateTime string
    Time when this resource was created.
    Degraded bool
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    DisableTcpConnections bool
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    DisplayName string
    Human-readable name for this resource.
    EffectiveAnnotations map[string]string
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EnableAuditAgent bool
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    EncryptionKey WorkstationConfigEncryptionKeyArgs
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    EphemeralDirectories []WorkstationConfigEphemeralDirectoryArgs
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    Etag string
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    Host WorkstationConfigHostArgs
    Runtime host for a workstation. Structure is documented below.
    IdleTimeout string
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    Labels map[string]string
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    Location string
    The location where the workstation cluster config should reside.


    MaxUsableWorkstations int
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    Name string
    Full name of this resource.
    PersistentDirectories []WorkstationConfigPersistentDirectoryArgs
    Directories to persist across workstation sessions. Structure is documented below.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    ReadinessChecks []WorkstationConfigReadinessCheckArgs
    Readiness checks to be performed on a workstation. Structure is documented below.
    ReplicaZones []string
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    RunningTimeout string
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    Uid string
    The system-generated UID of the resource.
    WorkstationClusterId string
    The ID of the parent workstation cluster.
    WorkstationConfigId string
    The ID to be assigned to the workstation cluster config.
    allowedPorts List<WorkstationConfigAllowedPort>
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations Map<String,String>
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    conditions List<WorkstationConfigCondition>
    Status conditions describing the current resource state. Structure is documented below.
    container WorkstationConfigContainer
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    createTime String
    Time when this resource was created.
    degraded Boolean
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    disableTcpConnections Boolean
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    displayName String
    Human-readable name for this resource.
    effectiveAnnotations Map<String,String>
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    enableAuditAgent Boolean
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryptionKey WorkstationConfigEncryptionKey
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeralDirectories List<WorkstationConfigEphemeralDirectory>
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    etag String
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    host WorkstationConfigHost
    Runtime host for a workstation. Structure is documented below.
    idleTimeout String
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels Map<String,String>
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    location String
    The location where the workstation cluster config should reside.


    maxUsableWorkstations Integer
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    name String
    Full name of this resource.
    persistentDirectories List<WorkstationConfigPersistentDirectory>
    Directories to persist across workstation sessions. Structure is documented below.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    readinessChecks List<WorkstationConfigReadinessCheck>
    Readiness checks to be performed on a workstation. Structure is documented below.
    replicaZones List<String>
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    runningTimeout String
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    uid String
    The system-generated UID of the resource.
    workstationClusterId String
    The ID of the parent workstation cluster.
    workstationConfigId String
    The ID to be assigned to the workstation cluster config.
    allowedPorts WorkstationConfigAllowedPort[]
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations {[key: string]: string}
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    conditions WorkstationConfigCondition[]
    Status conditions describing the current resource state. Structure is documented below.
    container WorkstationConfigContainer
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    createTime string
    Time when this resource was created.
    degraded boolean
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    disableTcpConnections boolean
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    displayName string
    Human-readable name for this resource.
    effectiveAnnotations {[key: string]: string}
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    enableAuditAgent boolean
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryptionKey WorkstationConfigEncryptionKey
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeralDirectories WorkstationConfigEphemeralDirectory[]
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    etag string
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    host WorkstationConfigHost
    Runtime host for a workstation. Structure is documented below.
    idleTimeout string
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels {[key: string]: string}
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    location string
    The location where the workstation cluster config should reside.


    maxUsableWorkstations number
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    name string
    Full name of this resource.
    persistentDirectories WorkstationConfigPersistentDirectory[]
    Directories to persist across workstation sessions. Structure is documented below.
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    readinessChecks WorkstationConfigReadinessCheck[]
    Readiness checks to be performed on a workstation. Structure is documented below.
    replicaZones string[]
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    runningTimeout string
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    uid string
    The system-generated UID of the resource.
    workstationClusterId string
    The ID of the parent workstation cluster.
    workstationConfigId string
    The ID to be assigned to the workstation cluster config.
    allowed_ports Sequence[WorkstationConfigAllowedPortArgs]
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations Mapping[str, str]
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    conditions Sequence[WorkstationConfigConditionArgs]
    Status conditions describing the current resource state. Structure is documented below.
    container WorkstationConfigContainerArgs
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    create_time str
    Time when this resource was created.
    degraded bool
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    disable_tcp_connections bool
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    display_name str
    Human-readable name for this resource.
    effective_annotations Mapping[str, str]
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    enable_audit_agent bool
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryption_key WorkstationConfigEncryptionKeyArgs
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeral_directories Sequence[WorkstationConfigEphemeralDirectoryArgs]
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    etag str
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    host WorkstationConfigHostArgs
    Runtime host for a workstation. Structure is documented below.
    idle_timeout str
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels Mapping[str, str]
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    location str
    The location where the workstation cluster config should reside.


    max_usable_workstations int
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    name str
    Full name of this resource.
    persistent_directories Sequence[WorkstationConfigPersistentDirectoryArgs]
    Directories to persist across workstation sessions. Structure is documented below.
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    readiness_checks Sequence[WorkstationConfigReadinessCheckArgs]
    Readiness checks to be performed on a workstation. Structure is documented below.
    replica_zones Sequence[str]
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    running_timeout str
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    uid str
    The system-generated UID of the resource.
    workstation_cluster_id str
    The ID of the parent workstation cluster.
    workstation_config_id str
    The ID to be assigned to the workstation cluster config.
    allowedPorts List<Property Map>
    A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535. Structure is documented below.
    annotations Map<String>
    Client-specified annotations. This is distinct from labels. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
    conditions List<Property Map>
    Status conditions describing the current resource state. Structure is documented below.
    container Property Map
    Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
    createTime String
    Time when this resource was created.
    degraded Boolean
    Whether this resource is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in the conditions field.
    disableTcpConnections Boolean
    Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.
    displayName String
    Human-readable name for this resource.
    effectiveAnnotations Map<String>
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    enableAuditAgent Boolean
    Whether to enable Linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from Cloud Audit Logs.
    encryptionKey Property Map
    Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Structure is documented below.
    ephemeralDirectories List<Property Map>
    Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
    etag String
    Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.
    host Property Map
    Runtime host for a workstation. Structure is documented below.
    idleTimeout String
    How long to wait before automatically stopping an instance that hasn't recently received any user traffic. A value of 0 indicates that this instance should never time out from idleness. Defaults to 20 minutes. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    labels Map<String>
    Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources. Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effective_labels for all of the labels present on the resource.
    location String
    The location where the workstation cluster config should reside.


    maxUsableWorkstations Number
    Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
    name String
    Full name of this resource.
    persistentDirectories List<Property Map>
    Directories to persist across workstation sessions. Structure is documented below.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    readinessChecks List<Property Map>
    Readiness checks to be performed on a workstation. Structure is documented below.
    replicaZones List<String>
    Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, ['us-central1-a', 'us-central1-f']. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.
    runningTimeout String
    How long to wait before automatically stopping a workstation after it was started. A value of 0 indicates that workstations using this configuration should never time out from running duration. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
    uid String
    The system-generated UID of the resource.
    workstationClusterId String
    The ID of the parent workstation cluster.
    workstationConfigId String
    The ID to be assigned to the workstation cluster config.

    Supporting Types

    WorkstationConfigAllowedPort, WorkstationConfigAllowedPortArgs

    First int
    Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    Last int
    Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    First int
    Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    Last int
    Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    first Integer
    Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    last Integer
    Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    first number
    Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    last number
    Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    first int
    Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    last int
    Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    first Number
    Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
    last Number
    Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.

    WorkstationConfigCondition, WorkstationConfigConditionArgs

    Code int
    (Output) The status code, which should be an enum value of google.rpc.Code.
    Details List<ImmutableDictionary<string, string>>
    (Output) A list of messages that carry the error details.
    Message string
    (Output) Human readable message indicating details about the current status.
    Code int
    (Output) The status code, which should be an enum value of google.rpc.Code.
    Details []map[string]string
    (Output) A list of messages that carry the error details.
    Message string
    (Output) Human readable message indicating details about the current status.
    code Integer
    (Output) The status code, which should be an enum value of google.rpc.Code.
    details List<Map<String,String>>
    (Output) A list of messages that carry the error details.
    message String
    (Output) Human readable message indicating details about the current status.
    code number
    (Output) The status code, which should be an enum value of google.rpc.Code.
    details {[key: string]: string}[]
    (Output) A list of messages that carry the error details.
    message string
    (Output) Human readable message indicating details about the current status.
    code int
    (Output) The status code, which should be an enum value of google.rpc.Code.
    details Sequence[Mapping[str, str]]
    (Output) A list of messages that carry the error details.
    message str
    (Output) Human readable message indicating details about the current status.
    code Number
    (Output) The status code, which should be an enum value of google.rpc.Code.
    details List<Map<String>>
    (Output) A list of messages that carry the error details.
    message String
    (Output) Human readable message indicating details about the current status.

    WorkstationConfigContainer, WorkstationConfigContainerArgs

    Args List<string>
    Arguments passed to the entrypoint.
    Commands List<string>
    If set, overrides the default ENTRYPOINT specified by the image.
    Env Dictionary<string, string>
    Environment variables passed to the container. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
    Image string
    Docker image defining the container. This image must be accessible by the config's service account.
    RunAsUser int
    If set, overrides the USER specified in the image with the given uid.
    WorkingDir string
    If set, overrides the default DIR specified by the image.
    Args []string
    Arguments passed to the entrypoint.
    Commands []string
    If set, overrides the default ENTRYPOINT specified by the image.
    Env map[string]string
    Environment variables passed to the container. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
    Image string
    Docker image defining the container. This image must be accessible by the config's service account.
    RunAsUser int
    If set, overrides the USER specified in the image with the given uid.
    WorkingDir string
    If set, overrides the default DIR specified by the image.
    args List<String>
    Arguments passed to the entrypoint.
    commands List<String>
    If set, overrides the default ENTRYPOINT specified by the image.
    env Map<String,String>
    Environment variables passed to the container. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
    image String
    Docker image defining the container. This image must be accessible by the config's service account.
    runAsUser Integer
    If set, overrides the USER specified in the image with the given uid.
    workingDir String
    If set, overrides the default DIR specified by the image.
    args string[]
    Arguments passed to the entrypoint.
    commands string[]
    If set, overrides the default ENTRYPOINT specified by the image.
    env {[key: string]: string}
    Environment variables passed to the container. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
    image string
    Docker image defining the container. This image must be accessible by the config's service account.
    runAsUser number
    If set, overrides the USER specified in the image with the given uid.
    workingDir string
    If set, overrides the default DIR specified by the image.
    args Sequence[str]
    Arguments passed to the entrypoint.
    commands Sequence[str]
    If set, overrides the default ENTRYPOINT specified by the image.
    env Mapping[str, str]
    Environment variables passed to the container. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
    image str
    Docker image defining the container. This image must be accessible by the config's service account.
    run_as_user int
    If set, overrides the USER specified in the image with the given uid.
    working_dir str
    If set, overrides the default DIR specified by the image.
    args List<String>
    Arguments passed to the entrypoint.
    commands List<String>
    If set, overrides the default ENTRYPOINT specified by the image.
    env Map<String>
    Environment variables passed to the container. The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
    image String
    Docker image defining the container. This image must be accessible by the config's service account.
    runAsUser Number
    If set, overrides the USER specified in the image with the given uid.
    workingDir String
    If set, overrides the default DIR specified by the image.

    WorkstationConfigEncryptionKey, WorkstationConfigEncryptionKeyArgs

    KmsKey string
    The name of the Google Cloud KMS encryption key.
    KmsKeyServiceAccount string
    The service account to use with the specified KMS key.
    KmsKey string
    The name of the Google Cloud KMS encryption key.
    KmsKeyServiceAccount string
    The service account to use with the specified KMS key.
    kmsKey String
    The name of the Google Cloud KMS encryption key.
    kmsKeyServiceAccount String
    The service account to use with the specified KMS key.
    kmsKey string
    The name of the Google Cloud KMS encryption key.
    kmsKeyServiceAccount string
    The service account to use with the specified KMS key.
    kms_key str
    The name of the Google Cloud KMS encryption key.
    kms_key_service_account str
    The service account to use with the specified KMS key.
    kmsKey String
    The name of the Google Cloud KMS encryption key.
    kmsKeyServiceAccount String
    The service account to use with the specified KMS key.

    WorkstationConfigEphemeralDirectory, WorkstationConfigEphemeralDirectoryArgs

    GcePd WorkstationConfigEphemeralDirectoryGcePd
    An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
    MountPath string
    Location of this directory in the running workstation.
    GcePd WorkstationConfigEphemeralDirectoryGcePd
    An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
    MountPath string
    Location of this directory in the running workstation.
    gcePd WorkstationConfigEphemeralDirectoryGcePd
    An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
    mountPath String
    Location of this directory in the running workstation.
    gcePd WorkstationConfigEphemeralDirectoryGcePd
    An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
    mountPath string
    Location of this directory in the running workstation.
    gce_pd WorkstationConfigEphemeralDirectoryGcePd
    An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
    mount_path str
    Location of this directory in the running workstation.
    gcePd Property Map
    An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
    mountPath String
    Location of this directory in the running workstation.

    WorkstationConfigEphemeralDirectoryGcePd, WorkstationConfigEphemeralDirectoryGcePdArgs

    DiskType string
    Type of the disk to use. Defaults to "pd-standard".
    ReadOnly bool
    Whether the disk is read only. If true, the disk may be shared by multiple VMs and sourceSnapshot must be set.
    SourceImage string
    Name of the disk image to use as the source for the disk. Must be empty sourceSnapshot is set. Updating sourceImage will update content in the ephemeral directory after the workstation is restarted.
    SourceSnapshot string
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    DiskType string
    Type of the disk to use. Defaults to "pd-standard".
    ReadOnly bool
    Whether the disk is read only. If true, the disk may be shared by multiple VMs and sourceSnapshot must be set.
    SourceImage string
    Name of the disk image to use as the source for the disk. Must be empty sourceSnapshot is set. Updating sourceImage will update content in the ephemeral directory after the workstation is restarted.
    SourceSnapshot string
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    diskType String
    Type of the disk to use. Defaults to "pd-standard".
    readOnly Boolean
    Whether the disk is read only. If true, the disk may be shared by multiple VMs and sourceSnapshot must be set.
    sourceImage String
    Name of the disk image to use as the source for the disk. Must be empty sourceSnapshot is set. Updating sourceImage will update content in the ephemeral directory after the workstation is restarted.
    sourceSnapshot String
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    diskType string
    Type of the disk to use. Defaults to "pd-standard".
    readOnly boolean
    Whether the disk is read only. If true, the disk may be shared by multiple VMs and sourceSnapshot must be set.
    sourceImage string
    Name of the disk image to use as the source for the disk. Must be empty sourceSnapshot is set. Updating sourceImage will update content in the ephemeral directory after the workstation is restarted.
    sourceSnapshot string
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    disk_type str
    Type of the disk to use. Defaults to "pd-standard".
    read_only bool
    Whether the disk is read only. If true, the disk may be shared by multiple VMs and sourceSnapshot must be set.
    source_image str
    Name of the disk image to use as the source for the disk. Must be empty sourceSnapshot is set. Updating sourceImage will update content in the ephemeral directory after the workstation is restarted.
    source_snapshot str
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    diskType String
    Type of the disk to use. Defaults to "pd-standard".
    readOnly Boolean
    Whether the disk is read only. If true, the disk may be shared by multiple VMs and sourceSnapshot must be set.
    sourceImage String
    Name of the disk image to use as the source for the disk. Must be empty sourceSnapshot is set. Updating sourceImage will update content in the ephemeral directory after the workstation is restarted.
    sourceSnapshot String
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.

    WorkstationConfigHost, WorkstationConfigHostArgs

    GceInstance WorkstationConfigHostGceInstance
    A runtime using a Compute Engine instance. Structure is documented below.
    GceInstance WorkstationConfigHostGceInstance
    A runtime using a Compute Engine instance. Structure is documented below.
    gceInstance WorkstationConfigHostGceInstance
    A runtime using a Compute Engine instance. Structure is documented below.
    gceInstance WorkstationConfigHostGceInstance
    A runtime using a Compute Engine instance. Structure is documented below.
    gce_instance WorkstationConfigHostGceInstance
    A runtime using a Compute Engine instance. Structure is documented below.
    gceInstance Property Map
    A runtime using a Compute Engine instance. Structure is documented below.

    WorkstationConfigHostGceInstance, WorkstationConfigHostGceInstanceArgs

    Accelerators List<WorkstationConfigHostGceInstanceAccelerator>
    An accelerator card attached to the instance. Structure is documented below.
    BoostConfigs List<WorkstationConfigHostGceInstanceBoostConfig>
    A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
    BootDiskSizeGb int
    Size of the boot disk in GB.
    ConfidentialInstanceConfig WorkstationConfigHostGceInstanceConfidentialInstanceConfig
    A set of Compute Engine Confidential VM instance options. Structure is documented below.
    DisablePublicIpAddresses bool
    Whether instances have no public IP address.
    DisableSsh bool
    Whether to disable SSH access to the VM.
    EnableNestedVirtualization bool
    Whether to enable nested virtualization on the Compute Engine VMs backing the Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    MachineType string
    The name of a Compute Engine machine type.
    PoolSize int
    Number of instances to pool for faster workstation startup.
    ServiceAccount string
    Email address of the service account that will be used on VM instances used to support this config. This service account must have permission to pull the specified container image. If not set, VMs will run without a service account, in which case the image must be publicly accessible.
    ServiceAccountScopes List<string>
    Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have iam.serviceAccounts.actAs on the service account.
    ShieldedInstanceConfig WorkstationConfigHostGceInstanceShieldedInstanceConfig
    A set of Compute Engine Shielded instance options. Structure is documented below.
    Tags List<string>
    Network tags to add to the Compute Engine machines backing the Workstations.
    VmTags Dictionary<string, string>
    Resource manager tags to be bound to the VM instances backing the Workstations. Tag keys and values have the same definition as https://cloud.google.com/resource-manager/docs/tags/tags-overview Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    Accelerators []WorkstationConfigHostGceInstanceAccelerator
    An accelerator card attached to the instance. Structure is documented below.
    BoostConfigs []WorkstationConfigHostGceInstanceBoostConfig
    A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
    BootDiskSizeGb int
    Size of the boot disk in GB.
    ConfidentialInstanceConfig WorkstationConfigHostGceInstanceConfidentialInstanceConfig
    A set of Compute Engine Confidential VM instance options. Structure is documented below.
    DisablePublicIpAddresses bool
    Whether instances have no public IP address.
    DisableSsh bool
    Whether to disable SSH access to the VM.
    EnableNestedVirtualization bool
    Whether to enable nested virtualization on the Compute Engine VMs backing the Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    MachineType string
    The name of a Compute Engine machine type.
    PoolSize int
    Number of instances to pool for faster workstation startup.
    ServiceAccount string
    Email address of the service account that will be used on VM instances used to support this config. This service account must have permission to pull the specified container image. If not set, VMs will run without a service account, in which case the image must be publicly accessible.
    ServiceAccountScopes []string
    Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have iam.serviceAccounts.actAs on the service account.
    ShieldedInstanceConfig WorkstationConfigHostGceInstanceShieldedInstanceConfig
    A set of Compute Engine Shielded instance options. Structure is documented below.
    Tags []string
    Network tags to add to the Compute Engine machines backing the Workstations.
    VmTags map[string]string
    Resource manager tags to be bound to the VM instances backing the Workstations. Tag keys and values have the same definition as https://cloud.google.com/resource-manager/docs/tags/tags-overview Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    accelerators List<WorkstationConfigHostGceInstanceAccelerator>
    An accelerator card attached to the instance. Structure is documented below.
    boostConfigs List<WorkstationConfigHostGceInstanceBoostConfig>
    A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
    bootDiskSizeGb Integer
    Size of the boot disk in GB.
    confidentialInstanceConfig WorkstationConfigHostGceInstanceConfidentialInstanceConfig
    A set of Compute Engine Confidential VM instance options. Structure is documented below.
    disablePublicIpAddresses Boolean
    Whether instances have no public IP address.
    disableSsh Boolean
    Whether to disable SSH access to the VM.
    enableNestedVirtualization Boolean
    Whether to enable nested virtualization on the Compute Engine VMs backing the Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machineType String
    The name of a Compute Engine machine type.
    poolSize Integer
    Number of instances to pool for faster workstation startup.
    serviceAccount String
    Email address of the service account that will be used on VM instances used to support this config. This service account must have permission to pull the specified container image. If not set, VMs will run without a service account, in which case the image must be publicly accessible.
    serviceAccountScopes List<String>
    Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have iam.serviceAccounts.actAs on the service account.
    shieldedInstanceConfig WorkstationConfigHostGceInstanceShieldedInstanceConfig
    A set of Compute Engine Shielded instance options. Structure is documented below.
    tags List<String>
    Network tags to add to the Compute Engine machines backing the Workstations.
    vmTags Map<String,String>
    Resource manager tags to be bound to the VM instances backing the Workstations. Tag keys and values have the same definition as https://cloud.google.com/resource-manager/docs/tags/tags-overview Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    accelerators WorkstationConfigHostGceInstanceAccelerator[]
    An accelerator card attached to the instance. Structure is documented below.
    boostConfigs WorkstationConfigHostGceInstanceBoostConfig[]
    A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
    bootDiskSizeGb number
    Size of the boot disk in GB.
    confidentialInstanceConfig WorkstationConfigHostGceInstanceConfidentialInstanceConfig
    A set of Compute Engine Confidential VM instance options. Structure is documented below.
    disablePublicIpAddresses boolean
    Whether instances have no public IP address.
    disableSsh boolean
    Whether to disable SSH access to the VM.
    enableNestedVirtualization boolean
    Whether to enable nested virtualization on the Compute Engine VMs backing the Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machineType string
    The name of a Compute Engine machine type.
    poolSize number
    Number of instances to pool for faster workstation startup.
    serviceAccount string
    Email address of the service account that will be used on VM instances used to support this config. This service account must have permission to pull the specified container image. If not set, VMs will run without a service account, in which case the image must be publicly accessible.
    serviceAccountScopes string[]
    Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have iam.serviceAccounts.actAs on the service account.
    shieldedInstanceConfig WorkstationConfigHostGceInstanceShieldedInstanceConfig
    A set of Compute Engine Shielded instance options. Structure is documented below.
    tags string[]
    Network tags to add to the Compute Engine machines backing the Workstations.
    vmTags {[key: string]: string}
    Resource manager tags to be bound to the VM instances backing the Workstations. Tag keys and values have the same definition as https://cloud.google.com/resource-manager/docs/tags/tags-overview Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    accelerators Sequence[WorkstationConfigHostGceInstanceAccelerator]
    An accelerator card attached to the instance. Structure is documented below.
    boost_configs Sequence[WorkstationConfigHostGceInstanceBoostConfig]
    A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
    boot_disk_size_gb int
    Size of the boot disk in GB.
    confidential_instance_config WorkstationConfigHostGceInstanceConfidentialInstanceConfig
    A set of Compute Engine Confidential VM instance options. Structure is documented below.
    disable_public_ip_addresses bool
    Whether instances have no public IP address.
    disable_ssh bool
    Whether to disable SSH access to the VM.
    enable_nested_virtualization bool
    Whether to enable nested virtualization on the Compute Engine VMs backing the Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machine_type str
    The name of a Compute Engine machine type.
    pool_size int
    Number of instances to pool for faster workstation startup.
    service_account str
    Email address of the service account that will be used on VM instances used to support this config. This service account must have permission to pull the specified container image. If not set, VMs will run without a service account, in which case the image must be publicly accessible.
    service_account_scopes Sequence[str]
    Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have iam.serviceAccounts.actAs on the service account.
    shielded_instance_config WorkstationConfigHostGceInstanceShieldedInstanceConfig
    A set of Compute Engine Shielded instance options. Structure is documented below.
    tags Sequence[str]
    Network tags to add to the Compute Engine machines backing the Workstations.
    vm_tags Mapping[str, str]
    Resource manager tags to be bound to the VM instances backing the Workstations. Tag keys and values have the same definition as https://cloud.google.com/resource-manager/docs/tags/tags-overview Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    accelerators List<Property Map>
    An accelerator card attached to the instance. Structure is documented below.
    boostConfigs List<Property Map>
    A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
    bootDiskSizeGb Number
    Size of the boot disk in GB.
    confidentialInstanceConfig Property Map
    A set of Compute Engine Confidential VM instance options. Structure is documented below.
    disablePublicIpAddresses Boolean
    Whether instances have no public IP address.
    disableSsh Boolean
    Whether to disable SSH access to the VM.
    enableNestedVirtualization Boolean
    Whether to enable nested virtualization on the Compute Engine VMs backing the Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machineType String
    The name of a Compute Engine machine type.
    poolSize Number
    Number of instances to pool for faster workstation startup.
    serviceAccount String
    Email address of the service account that will be used on VM instances used to support this config. This service account must have permission to pull the specified container image. If not set, VMs will run without a service account, in which case the image must be publicly accessible.
    serviceAccountScopes List<String>
    Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have iam.serviceAccounts.actAs on the service account.
    shieldedInstanceConfig Property Map
    A set of Compute Engine Shielded instance options. Structure is documented below.
    tags List<String>
    Network tags to add to the Compute Engine machines backing the Workstations.
    vmTags Map<String>
    Resource manager tags to be bound to the VM instances backing the Workstations. Tag keys and values have the same definition as https://cloud.google.com/resource-manager/docs/tags/tags-overview Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.

    WorkstationConfigHostGceInstanceAccelerator, WorkstationConfigHostGceInstanceAcceleratorArgs

    Count int
    Number of accelerator cards exposed to the instance.
    Type string
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    Count int
    Number of accelerator cards exposed to the instance.
    Type string
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count Integer
    Number of accelerator cards exposed to the instance.
    type String
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count number
    Number of accelerator cards exposed to the instance.
    type string
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count int
    Number of accelerator cards exposed to the instance.
    type str
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count Number
    Number of accelerator cards exposed to the instance.
    type String
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".

    WorkstationConfigHostGceInstanceBoostConfig, WorkstationConfigHostGceInstanceBoostConfigArgs

    Id string
    The id to be used for the boost config.
    Accelerators List<WorkstationConfigHostGceInstanceBoostConfigAccelerator>
    An accelerator card attached to the boost instance. Structure is documented below.
    BootDiskSizeGb int
    Size of the boot disk in GB. The minimum boot disk size is 30 GB. Defaults to 50 GB.
    EnableNestedVirtualization bool
    Whether to enable nested virtualization on the Compute Engine VMs backing boosted Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    MachineType string
    The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
    PoolSize int
    Number of instances to pool for faster workstation boosting.
    Id string
    The id to be used for the boost config.
    Accelerators []WorkstationConfigHostGceInstanceBoostConfigAccelerator
    An accelerator card attached to the boost instance. Structure is documented below.
    BootDiskSizeGb int
    Size of the boot disk in GB. The minimum boot disk size is 30 GB. Defaults to 50 GB.
    EnableNestedVirtualization bool
    Whether to enable nested virtualization on the Compute Engine VMs backing boosted Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    MachineType string
    The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
    PoolSize int
    Number of instances to pool for faster workstation boosting.
    id String
    The id to be used for the boost config.
    accelerators List<WorkstationConfigHostGceInstanceBoostConfigAccelerator>
    An accelerator card attached to the boost instance. Structure is documented below.
    bootDiskSizeGb Integer
    Size of the boot disk in GB. The minimum boot disk size is 30 GB. Defaults to 50 GB.
    enableNestedVirtualization Boolean
    Whether to enable nested virtualization on the Compute Engine VMs backing boosted Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machineType String
    The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
    poolSize Integer
    Number of instances to pool for faster workstation boosting.
    id string
    The id to be used for the boost config.
    accelerators WorkstationConfigHostGceInstanceBoostConfigAccelerator[]
    An accelerator card attached to the boost instance. Structure is documented below.
    bootDiskSizeGb number
    Size of the boot disk in GB. The minimum boot disk size is 30 GB. Defaults to 50 GB.
    enableNestedVirtualization boolean
    Whether to enable nested virtualization on the Compute Engine VMs backing boosted Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machineType string
    The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
    poolSize number
    Number of instances to pool for faster workstation boosting.
    id str
    The id to be used for the boost config.
    accelerators Sequence[WorkstationConfigHostGceInstanceBoostConfigAccelerator]
    An accelerator card attached to the boost instance. Structure is documented below.
    boot_disk_size_gb int
    Size of the boot disk in GB. The minimum boot disk size is 30 GB. Defaults to 50 GB.
    enable_nested_virtualization bool
    Whether to enable nested virtualization on the Compute Engine VMs backing boosted Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machine_type str
    The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
    pool_size int
    Number of instances to pool for faster workstation boosting.
    id String
    The id to be used for the boost config.
    accelerators List<Property Map>
    An accelerator card attached to the boost instance. Structure is documented below.
    bootDiskSizeGb Number
    Size of the boot disk in GB. The minimum boot disk size is 30 GB. Defaults to 50 GB.
    enableNestedVirtualization Boolean
    Whether to enable nested virtualization on the Compute Engine VMs backing boosted Workstations. See https://cloud.google.com/workstations/docs/reference/rest/v1beta/projects.locations.workstationClusters.workstationConfigs#GceInstance.FIELDS.enable_nested_virtualization
    machineType String
    The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
    poolSize Number
    Number of instances to pool for faster workstation boosting.

    WorkstationConfigHostGceInstanceBoostConfigAccelerator, WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs

    Count int
    Number of accelerator cards exposed to the instance.
    Type string
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    Count int
    Number of accelerator cards exposed to the instance.
    Type string
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count Integer
    Number of accelerator cards exposed to the instance.
    type String
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count number
    Number of accelerator cards exposed to the instance.
    type string
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count int
    Number of accelerator cards exposed to the instance.
    type str
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
    count Number
    Number of accelerator cards exposed to the instance.
    type String
    Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".

    WorkstationConfigHostGceInstanceConfidentialInstanceConfig, WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs

    EnableConfidentialCompute bool
    Whether the instance has confidential compute enabled.
    EnableConfidentialCompute bool
    Whether the instance has confidential compute enabled.
    enableConfidentialCompute Boolean
    Whether the instance has confidential compute enabled.
    enableConfidentialCompute boolean
    Whether the instance has confidential compute enabled.
    enable_confidential_compute bool
    Whether the instance has confidential compute enabled.
    enableConfidentialCompute Boolean
    Whether the instance has confidential compute enabled.

    WorkstationConfigHostGceInstanceShieldedInstanceConfig, WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs

    EnableIntegrityMonitoring bool
    Whether the instance has integrity monitoring enabled.
    EnableSecureBoot bool
    Whether the instance has Secure Boot enabled.
    EnableVtpm bool
    Whether the instance has the vTPM enabled.
    EnableIntegrityMonitoring bool
    Whether the instance has integrity monitoring enabled.
    EnableSecureBoot bool
    Whether the instance has Secure Boot enabled.
    EnableVtpm bool
    Whether the instance has the vTPM enabled.
    enableIntegrityMonitoring Boolean
    Whether the instance has integrity monitoring enabled.
    enableSecureBoot Boolean
    Whether the instance has Secure Boot enabled.
    enableVtpm Boolean
    Whether the instance has the vTPM enabled.
    enableIntegrityMonitoring boolean
    Whether the instance has integrity monitoring enabled.
    enableSecureBoot boolean
    Whether the instance has Secure Boot enabled.
    enableVtpm boolean
    Whether the instance has the vTPM enabled.
    enable_integrity_monitoring bool
    Whether the instance has integrity monitoring enabled.
    enable_secure_boot bool
    Whether the instance has Secure Boot enabled.
    enable_vtpm bool
    Whether the instance has the vTPM enabled.
    enableIntegrityMonitoring Boolean
    Whether the instance has integrity monitoring enabled.
    enableSecureBoot Boolean
    Whether the instance has Secure Boot enabled.
    enableVtpm Boolean
    Whether the instance has the vTPM enabled.

    WorkstationConfigPersistentDirectory, WorkstationConfigPersistentDirectoryArgs

    GcePd WorkstationConfigPersistentDirectoryGcePd
    A directory to persist across workstation sessions, backed by a Compute Engine regional persistent disk. Can only be updated if not empty during creation. Structure is documented below.
    MountPath string
    Location of this directory in the running workstation.
    GcePd WorkstationConfigPersistentDirectoryGcePd
    A directory to persist across workstation sessions, backed by a Compute Engine regional persistent disk. Can only be updated if not empty during creation. Structure is documented below.
    MountPath string
    Location of this directory in the running workstation.
    gcePd WorkstationConfigPersistentDirectoryGcePd
    A directory to persist across workstation sessions, backed by a Compute Engine regional persistent disk. Can only be updated if not empty during creation. Structure is documented below.
    mountPath String
    Location of this directory in the running workstation.
    gcePd WorkstationConfigPersistentDirectoryGcePd
    A directory to persist across workstation sessions, backed by a Compute Engine regional persistent disk. Can only be updated if not empty during creation. Structure is documented below.
    mountPath string
    Location of this directory in the running workstation.
    gce_pd WorkstationConfigPersistentDirectoryGcePd
    A directory to persist across workstation sessions, backed by a Compute Engine regional persistent disk. Can only be updated if not empty during creation. Structure is documented below.
    mount_path str
    Location of this directory in the running workstation.
    gcePd Property Map
    A directory to persist across workstation sessions, backed by a Compute Engine regional persistent disk. Can only be updated if not empty during creation. Structure is documented below.
    mountPath String
    Location of this directory in the running workstation.

    WorkstationConfigPersistentDirectoryGcePd, WorkstationConfigPersistentDirectoryGcePdArgs

    DiskType string
    Type of the disk to use. Defaults to "pd-standard".
    FsType string
    Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if sourceSnapshot is set. Defaults to ext4.
    ReclaimPolicy string
    Whether the persistent disk should be deleted when the workstation is deleted. Valid values are DELETE and RETAIN. Defaults to DELETE. Possible values are: DELETE, RETAIN.
    SizeGb int
    The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if sourceSnapshot is set. Valid values are 10, 50, 100, 200, 500, or 1000. Defaults to 200. If less than 200 GB, the diskType must be pd-balanced or pd-ssd.
    SourceSnapshot string
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    DiskType string
    Type of the disk to use. Defaults to "pd-standard".
    FsType string
    Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if sourceSnapshot is set. Defaults to ext4.
    ReclaimPolicy string
    Whether the persistent disk should be deleted when the workstation is deleted. Valid values are DELETE and RETAIN. Defaults to DELETE. Possible values are: DELETE, RETAIN.
    SizeGb int
    The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if sourceSnapshot is set. Valid values are 10, 50, 100, 200, 500, or 1000. Defaults to 200. If less than 200 GB, the diskType must be pd-balanced or pd-ssd.
    SourceSnapshot string
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    diskType String
    Type of the disk to use. Defaults to "pd-standard".
    fsType String
    Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if sourceSnapshot is set. Defaults to ext4.
    reclaimPolicy String
    Whether the persistent disk should be deleted when the workstation is deleted. Valid values are DELETE and RETAIN. Defaults to DELETE. Possible values are: DELETE, RETAIN.
    sizeGb Integer
    The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if sourceSnapshot is set. Valid values are 10, 50, 100, 200, 500, or 1000. Defaults to 200. If less than 200 GB, the diskType must be pd-balanced or pd-ssd.
    sourceSnapshot String
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    diskType string
    Type of the disk to use. Defaults to "pd-standard".
    fsType string
    Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if sourceSnapshot is set. Defaults to ext4.
    reclaimPolicy string
    Whether the persistent disk should be deleted when the workstation is deleted. Valid values are DELETE and RETAIN. Defaults to DELETE. Possible values are: DELETE, RETAIN.
    sizeGb number
    The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if sourceSnapshot is set. Valid values are 10, 50, 100, 200, 500, or 1000. Defaults to 200. If less than 200 GB, the diskType must be pd-balanced or pd-ssd.
    sourceSnapshot string
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    disk_type str
    Type of the disk to use. Defaults to "pd-standard".
    fs_type str
    Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if sourceSnapshot is set. Defaults to ext4.
    reclaim_policy str
    Whether the persistent disk should be deleted when the workstation is deleted. Valid values are DELETE and RETAIN. Defaults to DELETE. Possible values are: DELETE, RETAIN.
    size_gb int
    The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if sourceSnapshot is set. Valid values are 10, 50, 100, 200, 500, or 1000. Defaults to 200. If less than 200 GB, the diskType must be pd-balanced or pd-ssd.
    source_snapshot str
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.
    diskType String
    Type of the disk to use. Defaults to "pd-standard".
    fsType String
    Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if sourceSnapshot is set. Defaults to ext4.
    reclaimPolicy String
    Whether the persistent disk should be deleted when the workstation is deleted. Valid values are DELETE and RETAIN. Defaults to DELETE. Possible values are: DELETE, RETAIN.
    sizeGb Number
    The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if sourceSnapshot is set. Valid values are 10, 50, 100, 200, 500, or 1000. Defaults to 200. If less than 200 GB, the diskType must be pd-balanced or pd-ssd.
    sourceSnapshot String
    Name of the snapshot to use as the source for the disk. Must be empty if sourceImage is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted.

    WorkstationConfigReadinessCheck, WorkstationConfigReadinessCheckArgs

    Path string
    Path to which the request should be sent.
    Port int
    Port to which the request should be sent.
    Path string
    Path to which the request should be sent.
    Port int
    Port to which the request should be sent.
    path String
    Path to which the request should be sent.
    port Integer
    Port to which the request should be sent.
    path string
    Path to which the request should be sent.
    port number
    Port to which the request should be sent.
    path str
    Path to which the request should be sent.
    port int
    Port to which the request should be sent.
    path String
    Path to which the request should be sent.
    port Number
    Port to which the request should be sent.

    Import

    WorkstationConfig can be imported using any of these accepted formats:

    • projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}

    • {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}

    • {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}

    When using the pulumi import command, WorkstationConfig can be imported using one of the formats above. For example:

    $ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}
    
    $ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}
    
    $ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Google Cloud (GCP) Classic pulumi/pulumi-gcp
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the google-beta Terraform Provider.
    gcp logo
    Google Cloud Classic v8.9.3 published on Monday, Nov 18, 2024 by Pulumi