gcp.workstations.WorkstationConfig
Explore with Pulumi AI
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.
- Workstation
Cluster stringId - The ID of the parent workstation cluster.
- Workstation
Config stringId - The ID to be assigned to the workstation cluster config.
- Allowed
Ports List<WorkstationConfig Allowed Port> - 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
Workstation
Config Container - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- Disable
Tcp boolConnections - 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 string - Human-readable name for this resource.
- Enable
Audit boolAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - Encryption
Key WorkstationConfig Encryption Key - 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 List<WorkstationConfig Ephemeral Directory> - Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
- Host
Workstation
Config Host - Runtime host for a workstation. Structure is documented below.
- Idle
Timeout 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. - Max
Usable intWorkstations - 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 List<WorkstationConfig Persistent Directory> - 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.
- Readiness
Checks List<WorkstationConfig Readiness Check> - Readiness checks to be performed on a workstation. Structure is documented below.
- Replica
Zones 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. - Running
Timeout 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.
- Workstation
Cluster stringId - The ID of the parent workstation cluster.
- Workstation
Config stringId - The ID to be assigned to the workstation cluster config.
- Allowed
Ports []WorkstationConfig Allowed Port Args - 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
Workstation
Config Container Args - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- Disable
Tcp boolConnections - 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 string - Human-readable name for this resource.
- Enable
Audit boolAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - Encryption
Key WorkstationConfig Encryption Key Args - 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 []WorkstationConfig Ephemeral Directory Args - Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
- Host
Workstation
Config Host Args - Runtime host for a workstation. Structure is documented below.
- Idle
Timeout 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. - Max
Usable intWorkstations - 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 []WorkstationConfig Persistent Directory Args - 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.
- Readiness
Checks []WorkstationConfig Readiness Check Args - Readiness checks to be performed on a workstation. Structure is documented below.
- Replica
Zones []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. - Running
Timeout 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.
- workstation
Cluster StringId - The ID of the parent workstation cluster.
- workstation
Config StringId - The ID to be assigned to the workstation cluster config.
- allowed
Ports List<WorkstationConfig Allowed Port> - 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
Workstation
Config Container - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- disable
Tcp BooleanConnections - 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 String - Human-readable name for this resource.
- enable
Audit BooleanAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption
Key WorkstationConfig Encryption Key - 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 List<WorkstationConfig Ephemeral Directory> - Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
- host
Workstation
Config Host - Runtime host for a workstation. Structure is documented below.
- idle
Timeout 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. - max
Usable IntegerWorkstations - 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 List<WorkstationConfig Persistent Directory> - 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.
- readiness
Checks List<WorkstationConfig Readiness Check> - Readiness checks to be performed on a workstation. Structure is documented below.
- replica
Zones 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. - running
Timeout 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.
- workstation
Cluster stringId - The ID of the parent workstation cluster.
- workstation
Config stringId - The ID to be assigned to the workstation cluster config.
- allowed
Ports WorkstationConfig Allowed Port[] - 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
Workstation
Config Container - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- disable
Tcp booleanConnections - 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 string - Human-readable name for this resource.
- enable
Audit booleanAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption
Key WorkstationConfig Encryption Key - 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 WorkstationConfig Ephemeral Directory[] - Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
- host
Workstation
Config Host - Runtime host for a workstation. Structure is documented below.
- idle
Timeout 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. - max
Usable numberWorkstations - 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 WorkstationConfig Persistent Directory[] - 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.
- readiness
Checks WorkstationConfig Readiness Check[] - Readiness checks to be performed on a workstation. Structure is documented below.
- replica
Zones 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. - running
Timeout 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_ strid - The ID of the parent workstation cluster.
- workstation_
config_ strid - The ID to be assigned to the workstation cluster config.
- allowed_
ports Sequence[WorkstationConfig Allowed Port Args] - 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
Workstation
Config Container Args - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- disable_
tcp_ boolconnections - 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_ boolagent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption_
key WorkstationConfig Encryption Key Args - 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[WorkstationConfig Ephemeral Directory Args] - Ephemeral directories which won't persist across workstation sessions. Structure is documented below.
- host
Workstation
Config Host Args - 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_ intworkstations - 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[WorkstationConfig Persistent Directory Args] - 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[WorkstationConfig Readiness Check Args] - 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.
- workstation
Cluster StringId - The ID of the parent workstation cluster.
- workstation
Config StringId - The ID to be assigned to the workstation cluster config.
- allowed
Ports 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.
- disable
Tcp BooleanConnections - 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 String - Human-readable name for this resource.
- enable
Audit BooleanAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption
Key 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.
- ephemeral
Directories 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.
- idle
Timeout 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. - max
Usable NumberWorkstations - 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 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.
- readiness
Checks List<Property Map> - Readiness checks to be performed on a workstation. Structure is documented below.
- replica
Zones 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. - running
Timeout 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<Workstation
Config Condition> - Status conditions describing the current resource state. Structure is documented below.
- Create
Time 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.
- Effective
Annotations Dictionary<string, string> - Effective
Labels 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.
- Pulumi
Labels 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
[]Workstation
Config Condition - Status conditions describing the current resource state. Structure is documented below.
- Create
Time 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.
- Effective
Annotations map[string]string - Effective
Labels 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.
- Pulumi
Labels 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<Workstation
Config Condition> - Status conditions describing the current resource state. Structure is documented below.
- create
Time 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.
- effective
Annotations Map<String,String> - effective
Labels 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.
- pulumi
Labels 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
Workstation
Config Condition[] - Status conditions describing the current resource state. Structure is documented below.
- create
Time 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.
- effective
Annotations {[key: string]: string} - effective
Labels {[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.
- pulumi
Labels {[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[Workstation
Config Condition] - 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.
- create
Time 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.
- effective
Annotations Map<String> - effective
Labels 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.
- pulumi
Labels 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.
- Allowed
Ports List<WorkstationConfig Allowed Port> - 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<Workstation
Config Condition> - Status conditions describing the current resource state. Structure is documented below.
- Container
Workstation
Config Container - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- Create
Time 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.
- Disable
Tcp boolConnections - 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 string - Human-readable name for this resource.
- Effective
Annotations Dictionary<string, string> - Effective
Labels 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.
- Enable
Audit boolAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - Encryption
Key WorkstationConfig Encryption Key - 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 List<WorkstationConfig Ephemeral Directory> - 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
Workstation
Config Host - Runtime host for a workstation. Structure is documented below.
- Idle
Timeout 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.
- Max
Usable intWorkstations - 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.
- Persistent
Directories List<WorkstationConfig Persistent Directory> - 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.
- Pulumi
Labels Dictionary<string, string> - The combination of labels configured directly on the resource and default labels configured on the provider.
- Readiness
Checks List<WorkstationConfig Readiness Check> - Readiness checks to be performed on a workstation. Structure is documented below.
- Replica
Zones 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. - Running
Timeout 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.
- Workstation
Cluster stringId - The ID of the parent workstation cluster.
- Workstation
Config stringId - The ID to be assigned to the workstation cluster config.
- Allowed
Ports []WorkstationConfig Allowed Port Args - 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
[]Workstation
Config Condition Args - Status conditions describing the current resource state. Structure is documented below.
- Container
Workstation
Config Container Args - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- Create
Time 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.
- Disable
Tcp boolConnections - 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 string - Human-readable name for this resource.
- Effective
Annotations map[string]string - Effective
Labels 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.
- Enable
Audit boolAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - Encryption
Key WorkstationConfig Encryption Key Args - 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 []WorkstationConfig Ephemeral Directory Args - 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
Workstation
Config Host Args - Runtime host for a workstation. Structure is documented below.
- Idle
Timeout 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.
- Max
Usable intWorkstations - 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.
- Persistent
Directories []WorkstationConfig Persistent Directory Args - 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.
- Pulumi
Labels map[string]string - The combination of labels configured directly on the resource and default labels configured on the provider.
- Readiness
Checks []WorkstationConfig Readiness Check Args - Readiness checks to be performed on a workstation. Structure is documented below.
- Replica
Zones []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. - Running
Timeout 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.
- Workstation
Cluster stringId - The ID of the parent workstation cluster.
- Workstation
Config stringId - The ID to be assigned to the workstation cluster config.
- allowed
Ports List<WorkstationConfig Allowed Port> - 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<Workstation
Config Condition> - Status conditions describing the current resource state. Structure is documented below.
- container
Workstation
Config Container - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- create
Time 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.
- disable
Tcp BooleanConnections - 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 String - Human-readable name for this resource.
- effective
Annotations Map<String,String> - effective
Labels 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.
- enable
Audit BooleanAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption
Key WorkstationConfig Encryption Key - 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 List<WorkstationConfig Ephemeral Directory> - 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
Workstation
Config Host - Runtime host for a workstation. Structure is documented below.
- idle
Timeout 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.
- max
Usable IntegerWorkstations - 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.
- persistent
Directories List<WorkstationConfig Persistent Directory> - 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.
- pulumi
Labels Map<String,String> - The combination of labels configured directly on the resource and default labels configured on the provider.
- readiness
Checks List<WorkstationConfig Readiness Check> - Readiness checks to be performed on a workstation. Structure is documented below.
- replica
Zones 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. - running
Timeout 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.
- workstation
Cluster StringId - The ID of the parent workstation cluster.
- workstation
Config StringId - The ID to be assigned to the workstation cluster config.
- allowed
Ports WorkstationConfig Allowed Port[] - 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
Workstation
Config Condition[] - Status conditions describing the current resource state. Structure is documented below.
- container
Workstation
Config Container - Container that will be run for each workstation using this configuration when that workstation is started. Structure is documented below.
- create
Time 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.
- disable
Tcp booleanConnections - 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 string - Human-readable name for this resource.
- effective
Annotations {[key: string]: string} - effective
Labels {[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.
- enable
Audit booleanAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption
Key WorkstationConfig Encryption Key - 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 WorkstationConfig Ephemeral Directory[] - 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
Workstation
Config Host - Runtime host for a workstation. Structure is documented below.
- idle
Timeout 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.
- max
Usable numberWorkstations - 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.
- persistent
Directories WorkstationConfig Persistent Directory[] - 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.
- pulumi
Labels {[key: string]: string} - The combination of labels configured directly on the resource and default labels configured on the provider.
- readiness
Checks WorkstationConfig Readiness Check[] - Readiness checks to be performed on a workstation. Structure is documented below.
- replica
Zones 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. - running
Timeout 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.
- workstation
Cluster stringId - The ID of the parent workstation cluster.
- workstation
Config stringId - The ID to be assigned to the workstation cluster config.
- allowed_
ports Sequence[WorkstationConfig Allowed Port Args] - 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[Workstation
Config Condition Args] - Status conditions describing the current resource state. Structure is documented below.
- container
Workstation
Config Container Args - 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_ boolconnections - 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_ boolagent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption_
key WorkstationConfig Encryption Key Args - 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[WorkstationConfig Ephemeral Directory Args] - 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
Workstation
Config Host Args - 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_ intworkstations - 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[WorkstationConfig Persistent Directory Args] - 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[WorkstationConfig Readiness Check Args] - 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_ strid - The ID of the parent workstation cluster.
- workstation_
config_ strid - The ID to be assigned to the workstation cluster config.
- allowed
Ports 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.
- create
Time 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.
- disable
Tcp BooleanConnections - 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 String - Human-readable name for this resource.
- effective
Annotations Map<String> - effective
Labels Map<String> - All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- enable
Audit BooleanAgent - Whether to enable Linux
auditd
logging on the workstation. When enabled, a service account must also be specified that haslogging.buckets.write
permission on the project. Operating system audit logging is distinct from Cloud Audit Logs. - encryption
Key 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.
- ephemeral
Directories 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.
- idle
Timeout 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.
- max
Usable NumberWorkstations - 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.
- persistent
Directories 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.
- pulumi
Labels Map<String> - The combination of labels configured directly on the resource and default labels configured on the provider.
- readiness
Checks List<Property Map> - Readiness checks to be performed on a workstation. Structure is documented below.
- replica
Zones 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. - running
Timeout 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.
- workstation
Cluster StringId - The ID of the parent workstation cluster.
- workstation
Config StringId - The ID to be assigned to the workstation cluster config.
Supporting Types
WorkstationConfigAllowedPort, WorkstationConfigAllowedPortArgs
WorkstationConfigCondition, WorkstationConfigConditionArgs
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.
- Run
As intUser - If set, overrides the USER specified in the image with the given uid.
- Working
Dir 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.
- Run
As intUser - If set, overrides the USER specified in the image with the given uid.
- Working
Dir 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.
- run
As IntegerUser - If set, overrides the USER specified in the image with the given uid.
- working
Dir 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.
- run
As numberUser - If set, overrides the USER specified in the image with the given uid.
- working
Dir 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_ intuser - 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.
- run
As NumberUser - If set, overrides the USER specified in the image with the given uid.
- working
Dir String - If set, overrides the default DIR specified by the image.
WorkstationConfigEncryptionKey, WorkstationConfigEncryptionKeyArgs
- Kms
Key string - The name of the Google Cloud KMS encryption key.
- Kms
Key stringService Account - The service account to use with the specified KMS key.
- Kms
Key string - The name of the Google Cloud KMS encryption key.
- Kms
Key stringService Account - The service account to use with the specified KMS key.
- kms
Key String - The name of the Google Cloud KMS encryption key.
- kms
Key StringService Account - The service account to use with the specified KMS key.
- kms
Key string - The name of the Google Cloud KMS encryption key.
- kms
Key stringService Account - The service account to use with the specified KMS key.
- kms_
key str - The name of the Google Cloud KMS encryption key.
- kms_
key_ strservice_ account - The service account to use with the specified KMS key.
- kms
Key String - The name of the Google Cloud KMS encryption key.
- kms
Key StringService Account - The service account to use with the specified KMS key.
WorkstationConfigEphemeralDirectory, WorkstationConfigEphemeralDirectoryArgs
- Gce
Pd WorkstationConfig Ephemeral Directory Gce Pd - An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
- Mount
Path string - Location of this directory in the running workstation.
- Gce
Pd WorkstationConfig Ephemeral Directory Gce Pd - An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
- Mount
Path string - Location of this directory in the running workstation.
- gce
Pd WorkstationConfig Ephemeral Directory Gce Pd - An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
- mount
Path String - Location of this directory in the running workstation.
- gce
Pd WorkstationConfig Ephemeral Directory Gce Pd - An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
- mount
Path string - Location of this directory in the running workstation.
- gce_
pd WorkstationConfig Ephemeral Directory Gce Pd - An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
- mount_
path str - Location of this directory in the running workstation.
- gce
Pd Property Map - An EphemeralDirectory backed by a Compute Engine persistent disk. Structure is documented below.
- mount
Path String - Location of this directory in the running workstation.
WorkstationConfigEphemeralDirectoryGcePd, WorkstationConfigEphemeralDirectoryGcePdArgs
- Disk
Type string - 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 string - Name of the disk image to use as the source for the disk.
Must be empty
sourceSnapshot
is set. UpdatingsourceImage
will update content in the ephemeral directory after the workstation is restarted. - Source
Snapshot string - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- Disk
Type string - 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 string - Name of the disk image to use as the source for the disk.
Must be empty
sourceSnapshot
is set. UpdatingsourceImage
will update content in the ephemeral directory after the workstation is restarted. - Source
Snapshot string - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- disk
Type String - Type of the disk to use. Defaults to
"pd-standard"
. - read
Only Boolean - Whether the disk is read only. If true, the disk may be shared by multiple VMs and
sourceSnapshot
must be set. - source
Image String - Name of the disk image to use as the source for the disk.
Must be empty
sourceSnapshot
is set. UpdatingsourceImage
will update content in the ephemeral directory after the workstation is restarted. - source
Snapshot String - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- disk
Type string - Type of the disk to use. Defaults to
"pd-standard"
. - read
Only boolean - Whether the disk is read only. If true, the disk may be shared by multiple VMs and
sourceSnapshot
must be set. - source
Image string - Name of the disk image to use as the source for the disk.
Must be empty
sourceSnapshot
is set. UpdatingsourceImage
will update content in the ephemeral directory after the workstation is restarted. - source
Snapshot string - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_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. UpdatingsourceImage
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 ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- disk
Type String - Type of the disk to use. Defaults to
"pd-standard"
. - read
Only Boolean - Whether the disk is read only. If true, the disk may be shared by multiple VMs and
sourceSnapshot
must be set. - source
Image String - Name of the disk image to use as the source for the disk.
Must be empty
sourceSnapshot
is set. UpdatingsourceImage
will update content in the ephemeral directory after the workstation is restarted. - source
Snapshot String - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
WorkstationConfigHost, WorkstationConfigHostArgs
- Gce
Instance WorkstationConfig Host Gce Instance - A runtime using a Compute Engine instance. Structure is documented below.
- Gce
Instance WorkstationConfig Host Gce Instance - A runtime using a Compute Engine instance. Structure is documented below.
- gce
Instance WorkstationConfig Host Gce Instance - A runtime using a Compute Engine instance. Structure is documented below.
- gce
Instance WorkstationConfig Host Gce Instance - A runtime using a Compute Engine instance. Structure is documented below.
- gce_
instance WorkstationConfig Host Gce Instance - A runtime using a Compute Engine instance. Structure is documented below.
- gce
Instance Property Map - A runtime using a Compute Engine instance. Structure is documented below.
WorkstationConfigHostGceInstance, WorkstationConfigHostGceInstanceArgs
- Accelerators
List<Workstation
Config Host Gce Instance Accelerator> - An accelerator card attached to the instance. Structure is documented below.
- Boost
Configs List<WorkstationConfig Host Gce Instance Boost Config> - A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
- Boot
Disk intSize Gb - Size of the boot disk in GB.
- Confidential
Instance WorkstationConfig Config Host Gce Instance Confidential Instance Config - A set of Compute Engine Confidential VM instance options. Structure is documented below.
- Disable
Public boolIp Addresses - Whether instances have no public IP address.
- Disable
Ssh bool - Whether to disable SSH access to the VM.
- Enable
Nested boolVirtualization - 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 string - The name of a Compute Engine machine type.
- Pool
Size int - Number of instances to pool for faster workstation startup.
- Service
Account 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.
- Service
Account List<string>Scopes - 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 WorkstationConfig Config Host Gce Instance Shielded Instance Config - A set of Compute Engine Shielded instance options. Structure is documented below.
- List<string>
- Network tags to add to the Compute Engine machines backing the Workstations.
- 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 formattagValues/456
.
- Accelerators
[]Workstation
Config Host Gce Instance Accelerator - An accelerator card attached to the instance. Structure is documented below.
- Boost
Configs []WorkstationConfig Host Gce Instance Boost Config - A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
- Boot
Disk intSize Gb - Size of the boot disk in GB.
- Confidential
Instance WorkstationConfig Config Host Gce Instance Confidential Instance Config - A set of Compute Engine Confidential VM instance options. Structure is documented below.
- Disable
Public boolIp Addresses - Whether instances have no public IP address.
- Disable
Ssh bool - Whether to disable SSH access to the VM.
- Enable
Nested boolVirtualization - 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 string - The name of a Compute Engine machine type.
- Pool
Size int - Number of instances to pool for faster workstation startup.
- Service
Account 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.
- Service
Account []stringScopes - 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 WorkstationConfig Config Host Gce Instance Shielded Instance Config - A set of Compute Engine Shielded instance options. Structure is documented below.
- []string
- Network tags to add to the Compute Engine machines backing the Workstations.
- 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 formattagValues/456
.
- accelerators
List<Workstation
Config Host Gce Instance Accelerator> - An accelerator card attached to the instance. Structure is documented below.
- boost
Configs List<WorkstationConfig Host Gce Instance Boost Config> - A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
- boot
Disk IntegerSize Gb - Size of the boot disk in GB.
- confidential
Instance WorkstationConfig Config Host Gce Instance Confidential Instance Config - A set of Compute Engine Confidential VM instance options. Structure is documented below.
- disable
Public BooleanIp Addresses - Whether instances have no public IP address.
- disable
Ssh Boolean - Whether to disable SSH access to the VM.
- enable
Nested BooleanVirtualization - 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 String - The name of a Compute Engine machine type.
- pool
Size Integer - Number of instances to pool for faster workstation startup.
- service
Account 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.
- service
Account List<String>Scopes - 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 WorkstationConfig Config Host Gce Instance Shielded Instance Config - A set of Compute Engine Shielded instance options. Structure is documented below.
- List<String>
- Network tags to add to the Compute Engine machines backing the Workstations.
- 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 formattagValues/456
.
- accelerators
Workstation
Config Host Gce Instance Accelerator[] - An accelerator card attached to the instance. Structure is documented below.
- boost
Configs WorkstationConfig Host Gce Instance Boost Config[] - A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
- boot
Disk numberSize Gb - Size of the boot disk in GB.
- confidential
Instance WorkstationConfig Config Host Gce Instance Confidential Instance Config - A set of Compute Engine Confidential VM instance options. Structure is documented below.
- disable
Public booleanIp Addresses - Whether instances have no public IP address.
- disable
Ssh boolean - Whether to disable SSH access to the VM.
- enable
Nested booleanVirtualization - 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 string - The name of a Compute Engine machine type.
- pool
Size number - Number of instances to pool for faster workstation startup.
- service
Account 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.
- service
Account string[]Scopes - 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 WorkstationConfig Config Host Gce Instance Shielded Instance Config - A set of Compute Engine Shielded instance options. Structure is documented below.
- string[]
- Network tags to add to the Compute Engine machines backing the Workstations.
- {[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 formattagValues/456
.
- accelerators
Sequence[Workstation
Config Host Gce Instance Accelerator] - An accelerator card attached to the instance. Structure is documented below.
- boost_
configs Sequence[WorkstationConfig Host Gce Instance Boost Config] - A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
- boot_
disk_ intsize_ gb - Size of the boot disk in GB.
- confidential_
instance_ Workstationconfig Config Host Gce Instance Confidential Instance Config - A set of Compute Engine Confidential VM instance options. Structure is documented below.
- disable_
public_ boolip_ addresses - Whether instances have no public IP address.
- disable_
ssh bool - Whether to disable SSH access to the VM.
- enable_
nested_ boolvirtualization - 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_ Sequence[str]scopes - 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_ Workstationconfig Config Host Gce Instance Shielded Instance Config - A set of Compute Engine Shielded instance options. Structure is documented below.
- Sequence[str]
- Network tags to add to the Compute Engine machines backing the Workstations.
- 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 formattagValues/456
.
- accelerators List<Property Map>
- An accelerator card attached to the instance. Structure is documented below.
- boost
Configs List<Property Map> - A list of the boost configurations that workstations created using this workstation configuration are allowed to use. Structure is documented below.
- boot
Disk NumberSize Gb - Size of the boot disk in GB.
- confidential
Instance Property MapConfig - A set of Compute Engine Confidential VM instance options. Structure is documented below.
- disable
Public BooleanIp Addresses - Whether instances have no public IP address.
- disable
Ssh Boolean - Whether to disable SSH access to the VM.
- enable
Nested BooleanVirtualization - 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 String - The name of a Compute Engine machine type.
- pool
Size Number - Number of instances to pool for faster workstation startup.
- service
Account 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.
- service
Account List<String>Scopes - 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 Property MapConfig - A set of Compute Engine Shielded instance options. Structure is documented below.
- List<String>
- Network tags to add to the Compute Engine machines backing the Workstations.
- 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 formattagValues/456
.
WorkstationConfigHostGceInstanceAccelerator, WorkstationConfigHostGceInstanceAcceleratorArgs
WorkstationConfigHostGceInstanceBoostConfig, WorkstationConfigHostGceInstanceBoostConfigArgs
- Id string
- The id to be used for the boost config.
- Accelerators
List<Workstation
Config Host Gce Instance Boost Config Accelerator> - An accelerator card attached to the boost instance. Structure is documented below.
- Boot
Disk intSize Gb - Size of the boot disk in GB. The minimum boot disk size is
30
GB. Defaults to50
GB. - Enable
Nested boolVirtualization - 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 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.
- Pool
Size int - Number of instances to pool for faster workstation boosting.
- Id string
- The id to be used for the boost config.
- Accelerators
[]Workstation
Config Host Gce Instance Boost Config Accelerator - An accelerator card attached to the boost instance. Structure is documented below.
- Boot
Disk intSize Gb - Size of the boot disk in GB. The minimum boot disk size is
30
GB. Defaults to50
GB. - Enable
Nested boolVirtualization - 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 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.
- 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<Workstation
Config Host Gce Instance Boost Config Accelerator> - An accelerator card attached to the boost instance. Structure is documented below.
- boot
Disk IntegerSize Gb - Size of the boot disk in GB. The minimum boot disk size is
30
GB. Defaults to50
GB. - enable
Nested BooleanVirtualization - 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 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.
- pool
Size Integer - Number of instances to pool for faster workstation boosting.
- id string
- The id to be used for the boost config.
- accelerators
Workstation
Config Host Gce Instance Boost Config Accelerator[] - An accelerator card attached to the boost instance. Structure is documented below.
- boot
Disk numberSize Gb - Size of the boot disk in GB. The minimum boot disk size is
30
GB. Defaults to50
GB. - enable
Nested booleanVirtualization - 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 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.
- pool
Size number - Number of instances to pool for faster workstation boosting.
- id str
- The id to be used for the boost config.
- accelerators
Sequence[Workstation
Config Host Gce Instance Boost Config Accelerator] - An accelerator card attached to the boost instance. Structure is documented below.
- boot_
disk_ intsize_ gb - Size of the boot disk in GB. The minimum boot disk size is
30
GB. Defaults to50
GB. - enable_
nested_ boolvirtualization - 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.
- boot
Disk NumberSize Gb - Size of the boot disk in GB. The minimum boot disk size is
30
GB. Defaults to50
GB. - enable
Nested BooleanVirtualization - 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 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.
- pool
Size Number - Number of instances to pool for faster workstation boosting.
WorkstationConfigHostGceInstanceBoostConfigAccelerator, WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs
WorkstationConfigHostGceInstanceConfidentialInstanceConfig, WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs
- Enable
Confidential boolCompute - Whether the instance has confidential compute enabled.
- Enable
Confidential boolCompute - Whether the instance has confidential compute enabled.
- enable
Confidential BooleanCompute - Whether the instance has confidential compute enabled.
- enable
Confidential booleanCompute - Whether the instance has confidential compute enabled.
- enable_
confidential_ boolcompute - Whether the instance has confidential compute enabled.
- enable
Confidential BooleanCompute - Whether the instance has confidential compute enabled.
WorkstationConfigHostGceInstanceShieldedInstanceConfig, WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs
- Enable
Integrity boolMonitoring - Whether the instance has integrity monitoring enabled.
- Enable
Secure boolBoot - Whether the instance has Secure Boot enabled.
- Enable
Vtpm bool - Whether the instance has the vTPM enabled.
- Enable
Integrity boolMonitoring - Whether the instance has integrity monitoring enabled.
- Enable
Secure boolBoot - Whether the instance has Secure Boot enabled.
- Enable
Vtpm bool - Whether the instance has the vTPM enabled.
- enable
Integrity BooleanMonitoring - Whether the instance has integrity monitoring enabled.
- enable
Secure BooleanBoot - Whether the instance has Secure Boot enabled.
- enable
Vtpm Boolean - Whether the instance has the vTPM enabled.
- enable
Integrity booleanMonitoring - Whether the instance has integrity monitoring enabled.
- enable
Secure booleanBoot - Whether the instance has Secure Boot enabled.
- enable
Vtpm boolean - Whether the instance has the vTPM enabled.
- enable_
integrity_ boolmonitoring - Whether the instance has integrity monitoring enabled.
- enable_
secure_ boolboot - Whether the instance has Secure Boot enabled.
- enable_
vtpm bool - Whether the instance has the vTPM enabled.
- enable
Integrity BooleanMonitoring - Whether the instance has integrity monitoring enabled.
- enable
Secure BooleanBoot - Whether the instance has Secure Boot enabled.
- enable
Vtpm Boolean - Whether the instance has the vTPM enabled.
WorkstationConfigPersistentDirectory, WorkstationConfigPersistentDirectoryArgs
- Gce
Pd WorkstationConfig Persistent Directory Gce Pd - 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 string - Location of this directory in the running workstation.
- Gce
Pd WorkstationConfig Persistent Directory Gce Pd - 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 string - Location of this directory in the running workstation.
- gce
Pd WorkstationConfig Persistent Directory Gce Pd - 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 String - Location of this directory in the running workstation.
- gce
Pd WorkstationConfig Persistent Directory Gce Pd - 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 string - Location of this directory in the running workstation.
- gce_
pd WorkstationConfig Persistent Directory Gce Pd - 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.
- gce
Pd 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.
- mount
Path String - Location of this directory in the running workstation.
WorkstationConfigPersistentDirectoryGcePd, WorkstationConfigPersistentDirectoryGcePdArgs
- Disk
Type string - Type of the disk to use. Defaults to
"pd-standard"
. - Fs
Type 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 toext4
. - Reclaim
Policy string - Whether the persistent disk should be deleted when the workstation is deleted. Valid values are
DELETE
andRETAIN
. Defaults toDELETE
. 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 are10
,50
,100
,200
,500
, or1000
. Defaults to200
. If less than200
GB, thediskType
must bepd-balanced
orpd-ssd
. - Source
Snapshot string - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- Disk
Type string - Type of the disk to use. Defaults to
"pd-standard"
. - Fs
Type 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 toext4
. - Reclaim
Policy string - Whether the persistent disk should be deleted when the workstation is deleted. Valid values are
DELETE
andRETAIN
. Defaults toDELETE
. 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 are10
,50
,100
,200
,500
, or1000
. Defaults to200
. If less than200
GB, thediskType
must bepd-balanced
orpd-ssd
. - Source
Snapshot string - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- disk
Type String - Type of the disk to use. Defaults to
"pd-standard"
. - fs
Type 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 toext4
. - reclaim
Policy String - Whether the persistent disk should be deleted when the workstation is deleted. Valid values are
DELETE
andRETAIN
. Defaults toDELETE
. Possible values are:DELETE
,RETAIN
. - size
Gb 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 are10
,50
,100
,200
,500
, or1000
. Defaults to200
. If less than200
GB, thediskType
must bepd-balanced
orpd-ssd
. - source
Snapshot String - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- disk
Type string - Type of the disk to use. Defaults to
"pd-standard"
. - fs
Type 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 toext4
. - reclaim
Policy string - Whether the persistent disk should be deleted when the workstation is deleted. Valid values are
DELETE
andRETAIN
. Defaults toDELETE
. Possible values are:DELETE
,RETAIN
. - size
Gb 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 are10
,50
,100
,200
,500
, or1000
. Defaults to200
. If less than200
GB, thediskType
must bepd-balanced
orpd-ssd
. - source
Snapshot string - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_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 toext4
. - reclaim_
policy str - Whether the persistent disk should be deleted when the workstation is deleted. Valid values are
DELETE
andRETAIN
. Defaults toDELETE
. 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 are10
,50
,100
,200
,500
, or1000
. Defaults to200
. If less than200
GB, thediskType
must bepd-balanced
orpd-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 ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
- disk
Type String - Type of the disk to use. Defaults to
"pd-standard"
. - fs
Type 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 toext4
. - reclaim
Policy String - Whether the persistent disk should be deleted when the workstation is deleted. Valid values are
DELETE
andRETAIN
. Defaults toDELETE
. Possible values are:DELETE
,RETAIN
. - size
Gb 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 are10
,50
,100
,200
,500
, or1000
. Defaults to200
. If less than200
GB, thediskType
must bepd-balanced
orpd-ssd
. - source
Snapshot String - Name of the snapshot to use as the source for the disk.
Must be empty if
sourceImage
is set. Must be empty ifread_only
is false. Updatingsource_snapshot
will update content in the ephemeral directory after the workstation is restarted.
WorkstationConfigReadinessCheck, WorkstationConfigReadinessCheckArgs
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.