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

gcp.compute.InstanceTemplate

Explore with Pulumi AI

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

    Note: Global instance templates can be used in any region. To lower the impact of outages outside your region and gain data residency within your region, use google_compute_region_instance_template.

    Manages a VM instance template resource within GCE. For more information see the official documentation and API.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.serviceaccount.Account("default", {
        accountId: "service-account-id",
        displayName: "Service Account",
    });
    const myImage = gcp.compute.getImage({
        family: "debian-11",
        project: "debian-cloud",
    });
    const foobar = new gcp.compute.Disk("foobar", {
        name: "existing-disk",
        image: myImage.then(myImage => myImage.selfLink),
        size: 10,
        type: "pd-ssd",
        zone: "us-central1-a",
    });
    const dailyBackup = new gcp.compute.ResourcePolicy("daily_backup", {
        name: "every-day-4am",
        region: "us-central1",
        snapshotSchedulePolicy: {
            schedule: {
                dailySchedule: {
                    daysInCycle: 1,
                    startTime: "04:00",
                },
            },
        },
    });
    const defaultInstanceTemplate = new gcp.compute.InstanceTemplate("default", {
        name: "appserver-template",
        description: "This template is used to create app server instances.",
        tags: [
            "foo",
            "bar",
        ],
        labels: {
            environment: "dev",
        },
        instanceDescription: "description assigned to instances",
        machineType: "e2-medium",
        canIpForward: false,
        scheduling: {
            automaticRestart: true,
            onHostMaintenance: "MIGRATE",
        },
        disks: [
            {
                sourceImage: "debian-cloud/debian-11",
                autoDelete: true,
                boot: true,
                resourcePolicies: dailyBackup.id,
            },
            {
                source: foobar.name,
                autoDelete: false,
                boot: false,
            },
        ],
        networkInterfaces: [{
            network: "default",
        }],
        metadata: {
            foo: "bar",
        },
        serviceAccount: {
            email: _default.email,
            scopes: ["cloud-platform"],
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.serviceaccount.Account("default",
        account_id="service-account-id",
        display_name="Service Account")
    my_image = gcp.compute.get_image(family="debian-11",
        project="debian-cloud")
    foobar = gcp.compute.Disk("foobar",
        name="existing-disk",
        image=my_image.self_link,
        size=10,
        type="pd-ssd",
        zone="us-central1-a")
    daily_backup = gcp.compute.ResourcePolicy("daily_backup",
        name="every-day-4am",
        region="us-central1",
        snapshot_schedule_policy={
            "schedule": {
                "daily_schedule": {
                    "days_in_cycle": 1,
                    "start_time": "04:00",
                },
            },
        })
    default_instance_template = gcp.compute.InstanceTemplate("default",
        name="appserver-template",
        description="This template is used to create app server instances.",
        tags=[
            "foo",
            "bar",
        ],
        labels={
            "environment": "dev",
        },
        instance_description="description assigned to instances",
        machine_type="e2-medium",
        can_ip_forward=False,
        scheduling={
            "automatic_restart": True,
            "on_host_maintenance": "MIGRATE",
        },
        disks=[
            {
                "source_image": "debian-cloud/debian-11",
                "auto_delete": True,
                "boot": True,
                "resource_policies": daily_backup.id,
            },
            {
                "source": foobar.name,
                "auto_delete": False,
                "boot": False,
            },
        ],
        network_interfaces=[{
            "network": "default",
        }],
        metadata={
            "foo": "bar",
        },
        service_account={
            "email": default.email,
            "scopes": ["cloud-platform"],
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{
    			AccountId:   pulumi.String("service-account-id"),
    			DisplayName: pulumi.String("Service Account"),
    		})
    		if err != nil {
    			return err
    		}
    		myImage, err := compute.LookupImage(ctx, &compute.LookupImageArgs{
    			Family:  pulumi.StringRef("debian-11"),
    			Project: pulumi.StringRef("debian-cloud"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		foobar, err := compute.NewDisk(ctx, "foobar", &compute.DiskArgs{
    			Name:  pulumi.String("existing-disk"),
    			Image: pulumi.String(myImage.SelfLink),
    			Size:  pulumi.Int(10),
    			Type:  pulumi.String("pd-ssd"),
    			Zone:  pulumi.String("us-central1-a"),
    		})
    		if err != nil {
    			return err
    		}
    		dailyBackup, err := compute.NewResourcePolicy(ctx, "daily_backup", &compute.ResourcePolicyArgs{
    			Name:   pulumi.String("every-day-4am"),
    			Region: pulumi.String("us-central1"),
    			SnapshotSchedulePolicy: &compute.ResourcePolicySnapshotSchedulePolicyArgs{
    				Schedule: &compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{
    					DailySchedule: &compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{
    						DaysInCycle: pulumi.Int(1),
    						StartTime:   pulumi.String("04:00"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewInstanceTemplate(ctx, "default", &compute.InstanceTemplateArgs{
    			Name:        pulumi.String("appserver-template"),
    			Description: pulumi.String("This template is used to create app server instances."),
    			Tags: pulumi.StringArray{
    				pulumi.String("foo"),
    				pulumi.String("bar"),
    			},
    			Labels: pulumi.StringMap{
    				"environment": pulumi.String("dev"),
    			},
    			InstanceDescription: pulumi.String("description assigned to instances"),
    			MachineType:         pulumi.String("e2-medium"),
    			CanIpForward:        pulumi.Bool(false),
    			Scheduling: &compute.InstanceTemplateSchedulingArgs{
    				AutomaticRestart:  pulumi.Bool(true),
    				OnHostMaintenance: pulumi.String("MIGRATE"),
    			},
    			Disks: compute.InstanceTemplateDiskArray{
    				&compute.InstanceTemplateDiskArgs{
    					SourceImage:      pulumi.String("debian-cloud/debian-11"),
    					AutoDelete:       pulumi.Bool(true),
    					Boot:             pulumi.Bool(true),
    					ResourcePolicies: dailyBackup.ID(),
    				},
    				&compute.InstanceTemplateDiskArgs{
    					Source:     foobar.Name,
    					AutoDelete: pulumi.Bool(false),
    					Boot:       pulumi.Bool(false),
    				},
    			},
    			NetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{
    				&compute.InstanceTemplateNetworkInterfaceArgs{
    					Network: pulumi.String("default"),
    				},
    			},
    			Metadata: pulumi.StringMap{
    				"foo": pulumi.String("bar"),
    			},
    			ServiceAccount: &compute.InstanceTemplateServiceAccountArgs{
    				Email: _default.Email,
    				Scopes: pulumi.StringArray{
    					pulumi.String("cloud-platform"),
    				},
    			},
    		})
    		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.ServiceAccount.Account("default", new()
        {
            AccountId = "service-account-id",
            DisplayName = "Service Account",
        });
    
        var myImage = Gcp.Compute.GetImage.Invoke(new()
        {
            Family = "debian-11",
            Project = "debian-cloud",
        });
    
        var foobar = new Gcp.Compute.Disk("foobar", new()
        {
            Name = "existing-disk",
            Image = myImage.Apply(getImageResult => getImageResult.SelfLink),
            Size = 10,
            Type = "pd-ssd",
            Zone = "us-central1-a",
        });
    
        var dailyBackup = new Gcp.Compute.ResourcePolicy("daily_backup", new()
        {
            Name = "every-day-4am",
            Region = "us-central1",
            SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs
            {
                Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs
                {
                    DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs
                    {
                        DaysInCycle = 1,
                        StartTime = "04:00",
                    },
                },
            },
        });
    
        var defaultInstanceTemplate = new Gcp.Compute.InstanceTemplate("default", new()
        {
            Name = "appserver-template",
            Description = "This template is used to create app server instances.",
            Tags = new[]
            {
                "foo",
                "bar",
            },
            Labels = 
            {
                { "environment", "dev" },
            },
            InstanceDescription = "description assigned to instances",
            MachineType = "e2-medium",
            CanIpForward = false,
            Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs
            {
                AutomaticRestart = true,
                OnHostMaintenance = "MIGRATE",
            },
            Disks = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
                {
                    SourceImage = "debian-cloud/debian-11",
                    AutoDelete = true,
                    Boot = true,
                    ResourcePolicies = dailyBackup.Id,
                },
                new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
                {
                    Source = foobar.Name,
                    AutoDelete = false,
                    Boot = false,
                },
            },
            NetworkInterfaces = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs
                {
                    Network = "default",
                },
            },
            Metadata = 
            {
                { "foo", "bar" },
            },
            ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs
            {
                Email = @default.Email,
                Scopes = new[]
                {
                    "cloud-platform",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.serviceaccount.Account;
    import com.pulumi.gcp.serviceaccount.AccountArgs;
    import com.pulumi.gcp.compute.ComputeFunctions;
    import com.pulumi.gcp.compute.inputs.GetImageArgs;
    import com.pulumi.gcp.compute.Disk;
    import com.pulumi.gcp.compute.DiskArgs;
    import com.pulumi.gcp.compute.ResourcePolicy;
    import com.pulumi.gcp.compute.ResourcePolicyArgs;
    import com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;
    import com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;
    import com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;
    import com.pulumi.gcp.compute.InstanceTemplate;
    import com.pulumi.gcp.compute.InstanceTemplateArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;
    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 Account("default", AccountArgs.builder()
                .accountId("service-account-id")
                .displayName("Service Account")
                .build());
    
            final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()
                .family("debian-11")
                .project("debian-cloud")
                .build());
    
            var foobar = new Disk("foobar", DiskArgs.builder()
                .name("existing-disk")
                .image(myImage.applyValue(getImageResult -> getImageResult.selfLink()))
                .size(10)
                .type("pd-ssd")
                .zone("us-central1-a")
                .build());
    
            var dailyBackup = new ResourcePolicy("dailyBackup", ResourcePolicyArgs.builder()
                .name("every-day-4am")
                .region("us-central1")
                .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()
                    .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()
                        .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()
                            .daysInCycle(1)
                            .startTime("04:00")
                            .build())
                        .build())
                    .build())
                .build());
    
            var defaultInstanceTemplate = new InstanceTemplate("defaultInstanceTemplate", InstanceTemplateArgs.builder()
                .name("appserver-template")
                .description("This template is used to create app server instances.")
                .tags(            
                    "foo",
                    "bar")
                .labels(Map.of("environment", "dev"))
                .instanceDescription("description assigned to instances")
                .machineType("e2-medium")
                .canIpForward(false)
                .scheduling(InstanceTemplateSchedulingArgs.builder()
                    .automaticRestart(true)
                    .onHostMaintenance("MIGRATE")
                    .build())
                .disks(            
                    InstanceTemplateDiskArgs.builder()
                        .sourceImage("debian-cloud/debian-11")
                        .autoDelete(true)
                        .boot(true)
                        .resourcePolicies(dailyBackup.id())
                        .build(),
                    InstanceTemplateDiskArgs.builder()
                        .source(foobar.name())
                        .autoDelete(false)
                        .boot(false)
                        .build())
                .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()
                    .network("default")
                    .build())
                .metadata(Map.of("foo", "bar"))
                .serviceAccount(InstanceTemplateServiceAccountArgs.builder()
                    .email(default_.email())
                    .scopes("cloud-platform")
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:serviceaccount:Account
        properties:
          accountId: service-account-id
          displayName: Service Account
      defaultInstanceTemplate:
        type: gcp:compute:InstanceTemplate
        name: default
        properties:
          name: appserver-template
          description: This template is used to create app server instances.
          tags:
            - foo
            - bar
          labels:
            environment: dev
          instanceDescription: description assigned to instances
          machineType: e2-medium
          canIpForward: false
          scheduling:
            automaticRestart: true
            onHostMaintenance: MIGRATE
          disks:
            - sourceImage: debian-cloud/debian-11
              autoDelete: true
              boot: true
              resourcePolicies: ${dailyBackup.id}
            - source: ${foobar.name}
              autoDelete: false
              boot: false
          networkInterfaces:
            - network: default
          metadata:
            foo: bar
          serviceAccount:
            email: ${default.email}
            scopes:
              - cloud-platform
      foobar:
        type: gcp:compute:Disk
        properties:
          name: existing-disk
          image: ${myImage.selfLink}
          size: 10
          type: pd-ssd
          zone: us-central1-a
      dailyBackup:
        type: gcp:compute:ResourcePolicy
        name: daily_backup
        properties:
          name: every-day-4am
          region: us-central1
          snapshotSchedulePolicy:
            schedule:
              dailySchedule:
                daysInCycle: 1
                startTime: 04:00
    variables:
      myImage:
        fn::invoke:
          Function: gcp:compute:getImage
          Arguments:
            family: debian-11
            project: debian-cloud
    

    Automatic Envoy Deployment

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const default = gcp.compute.getDefaultServiceAccount({});
    const myImage = gcp.compute.getImage({
        family: "debian-11",
        project: "debian-cloud",
    });
    const foobar = new gcp.compute.InstanceTemplate("foobar", {
        name: "appserver-template",
        machineType: "e2-medium",
        canIpForward: false,
        tags: [
            "foo",
            "bar",
        ],
        disks: [{
            sourceImage: myImage.then(myImage => myImage.selfLink),
            autoDelete: true,
            boot: true,
        }],
        networkInterfaces: [{
            network: "default",
        }],
        scheduling: {
            preemptible: false,
            automaticRestart: true,
        },
        metadata: {
            "gce-software-declaration": `{
      "softwareRecipes": [{
        "name": "install-gce-service-proxy-agent",
        "desired_state": "INSTALLED",
        "installSteps": [{
          "scriptRun": {
            "script": "#! /bin/bash\\nZONE=(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=(mktemp -d)\\nsudo gsutil cp   gs://gce-service-proxy-"ZONE"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz   "SERVICE_PROXY_AGENT_DIRECTORY"   || sudo gsutil cp     gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz     "SERVICE_PROXY_AGENT_DIRECTORY"\\nsudo tar -xzf "SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent-0.2.tgz -C "SERVICE_PROXY_AGENT_DIRECTORY"\\n"SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent/service-proxy-agent-bootstrap.sh"
          }
        }]
      }]
    }
    `,
            "gce-service-proxy": `{
      "api-version": "0.2",
      "proxy-spec": {
        "proxy-port": 15001,
        "network": "my-network",
        "tracing": "ON",
        "access-log": "/var/log/envoy/access.log"
      }
      "service": {
        "serving-ports": [80, 81]
      },
     "labels": {
       "app_name": "bookserver_app",
       "app_version": "STABLE"
      }
    }
    `,
            "enable-guest-attributes": "true",
            "enable-osconfig": "true",
        },
        serviceAccount: {
            email: _default.then(_default => _default.email),
            scopes: ["cloud-platform"],
        },
        labels: {
            "gce-service-proxy": "on",
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.compute.get_default_service_account()
    my_image = gcp.compute.get_image(family="debian-11",
        project="debian-cloud")
    foobar = gcp.compute.InstanceTemplate("foobar",
        name="appserver-template",
        machine_type="e2-medium",
        can_ip_forward=False,
        tags=[
            "foo",
            "bar",
        ],
        disks=[{
            "source_image": my_image.self_link,
            "auto_delete": True,
            "boot": True,
        }],
        network_interfaces=[{
            "network": "default",
        }],
        scheduling={
            "preemptible": False,
            "automatic_restart": True,
        },
        metadata={
            "gce-software-declaration": """{
      "softwareRecipes": [{
        "name": "install-gce-service-proxy-agent",
        "desired_state": "INSTALLED",
        "installSteps": [{
          "scriptRun": {
            "script": "#! /bin/bash\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\nsudo gsutil cp   gs://gce-service-proxy-"$ZONE"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz   "$SERVICE_PROXY_AGENT_DIRECTORY"   || sudo gsutil cp     gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz     "$SERVICE_PROXY_AGENT_DIRECTORY"\nsudo tar -xzf "$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent-0.2.tgz -C "$SERVICE_PROXY_AGENT_DIRECTORY"\n"$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent/service-proxy-agent-bootstrap.sh"
          }
        }]
      }]
    }
    """,
            "gce-service-proxy": """{
      "api-version": "0.2",
      "proxy-spec": {
        "proxy-port": 15001,
        "network": "my-network",
        "tracing": "ON",
        "access-log": "/var/log/envoy/access.log"
      }
      "service": {
        "serving-ports": [80, 81]
      },
     "labels": {
       "app_name": "bookserver_app",
       "app_version": "STABLE"
      }
    }
    """,
            "enable-guest-attributes": "true",
            "enable-osconfig": "true",
        },
        service_account={
            "email": default.email,
            "scopes": ["cloud-platform"],
        },
        labels={
            "gce-service-proxy": "on",
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil)
    		if err != nil {
    			return err
    		}
    		myImage, err := compute.LookupImage(ctx, &compute.LookupImageArgs{
    			Family:  pulumi.StringRef("debian-11"),
    			Project: pulumi.StringRef("debian-cloud"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewInstanceTemplate(ctx, "foobar", &compute.InstanceTemplateArgs{
    			Name:         pulumi.String("appserver-template"),
    			MachineType:  pulumi.String("e2-medium"),
    			CanIpForward: pulumi.Bool(false),
    			Tags: pulumi.StringArray{
    				pulumi.String("foo"),
    				pulumi.String("bar"),
    			},
    			Disks: compute.InstanceTemplateDiskArray{
    				&compute.InstanceTemplateDiskArgs{
    					SourceImage: pulumi.String(myImage.SelfLink),
    					AutoDelete:  pulumi.Bool(true),
    					Boot:        pulumi.Bool(true),
    				},
    			},
    			NetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{
    				&compute.InstanceTemplateNetworkInterfaceArgs{
    					Network: pulumi.String("default"),
    				},
    			},
    			Scheduling: &compute.InstanceTemplateSchedulingArgs{
    				Preemptible:      pulumi.Bool(false),
    				AutomaticRestart: pulumi.Bool(true),
    			},
    			Metadata: pulumi.StringMap{
    				"gce-software-declaration": pulumi.String(`{
      "softwareRecipes": [{
        "name": "install-gce-service-proxy-agent",
        "desired_state": "INSTALLED",
        "installSteps": [{
          "scriptRun": {
            "script": "#! /bin/bash\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\nsudo gsutil cp   gs://gce-service-proxy-"$ZONE"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz   "$SERVICE_PROXY_AGENT_DIRECTORY"   || sudo gsutil cp     gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz     "$SERVICE_PROXY_AGENT_DIRECTORY"\nsudo tar -xzf "$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent-0.2.tgz -C "$SERVICE_PROXY_AGENT_DIRECTORY"\n"$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent/service-proxy-agent-bootstrap.sh"
          }
        }]
      }]
    }
    `),
    				"gce-service-proxy": pulumi.String(`{
      "api-version": "0.2",
      "proxy-spec": {
        "proxy-port": 15001,
        "network": "my-network",
        "tracing": "ON",
        "access-log": "/var/log/envoy/access.log"
      }
      "service": {
        "serving-ports": [80, 81]
      },
     "labels": {
       "app_name": "bookserver_app",
       "app_version": "STABLE"
      }
    }
    `),
    				"enable-guest-attributes": pulumi.String("true"),
    				"enable-osconfig":         pulumi.String("true"),
    			},
    			ServiceAccount: &compute.InstanceTemplateServiceAccountArgs{
    				Email: pulumi.String(_default.Email),
    				Scopes: pulumi.StringArray{
    					pulumi.String("cloud-platform"),
    				},
    			},
    			Labels: pulumi.StringMap{
    				"gce-service-proxy": pulumi.String("on"),
    			},
    		})
    		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 = Gcp.Compute.GetDefaultServiceAccount.Invoke();
    
        var myImage = Gcp.Compute.GetImage.Invoke(new()
        {
            Family = "debian-11",
            Project = "debian-cloud",
        });
    
        var foobar = new Gcp.Compute.InstanceTemplate("foobar", new()
        {
            Name = "appserver-template",
            MachineType = "e2-medium",
            CanIpForward = false,
            Tags = new[]
            {
                "foo",
                "bar",
            },
            Disks = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
                {
                    SourceImage = myImage.Apply(getImageResult => getImageResult.SelfLink),
                    AutoDelete = true,
                    Boot = true,
                },
            },
            NetworkInterfaces = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs
                {
                    Network = "default",
                },
            },
            Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs
            {
                Preemptible = false,
                AutomaticRestart = true,
            },
            Metadata = 
            {
                { "gce-software-declaration", @"{
      ""softwareRecipes"": [{
        ""name"": ""install-gce-service-proxy-agent"",
        ""desired_state"": ""INSTALLED"",
        ""installSteps"": [{
          ""scriptRun"": {
            ""script"": ""#! /bin/bash\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\nsudo gsutil cp   gs://gce-service-proxy-""$ZONE""/service-proxy-agent/releases/service-proxy-agent-0.2.tgz   ""$SERVICE_PROXY_AGENT_DIRECTORY""   || sudo gsutil cp     gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz     ""$SERVICE_PROXY_AGENT_DIRECTORY""\nsudo tar -xzf ""$SERVICE_PROXY_AGENT_DIRECTORY""/service-proxy-agent-0.2.tgz -C ""$SERVICE_PROXY_AGENT_DIRECTORY""\n""$SERVICE_PROXY_AGENT_DIRECTORY""/service-proxy-agent/service-proxy-agent-bootstrap.sh""
          }
        }]
      }]
    }
    " },
                { "gce-service-proxy", @"{
      ""api-version"": ""0.2"",
      ""proxy-spec"": {
        ""proxy-port"": 15001,
        ""network"": ""my-network"",
        ""tracing"": ""ON"",
        ""access-log"": ""/var/log/envoy/access.log""
      }
      ""service"": {
        ""serving-ports"": [80, 81]
      },
     ""labels"": {
       ""app_name"": ""bookserver_app"",
       ""app_version"": ""STABLE""
      }
    }
    " },
                { "enable-guest-attributes", "true" },
                { "enable-osconfig", "true" },
            },
            ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs
            {
                Email = @default.Apply(@default => @default.Apply(getDefaultServiceAccountResult => getDefaultServiceAccountResult.Email)),
                Scopes = new[]
                {
                    "cloud-platform",
                },
            },
            Labels = 
            {
                { "gce-service-proxy", "on" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.ComputeFunctions;
    import com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;
    import com.pulumi.gcp.compute.inputs.GetImageArgs;
    import com.pulumi.gcp.compute.InstanceTemplate;
    import com.pulumi.gcp.compute.InstanceTemplateArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var default = ComputeFunctions.getDefaultServiceAccount();
    
            final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()
                .family("debian-11")
                .project("debian-cloud")
                .build());
    
            var foobar = new InstanceTemplate("foobar", InstanceTemplateArgs.builder()
                .name("appserver-template")
                .machineType("e2-medium")
                .canIpForward(false)
                .tags(            
                    "foo",
                    "bar")
                .disks(InstanceTemplateDiskArgs.builder()
                    .sourceImage(myImage.applyValue(getImageResult -> getImageResult.selfLink()))
                    .autoDelete(true)
                    .boot(true)
                    .build())
                .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()
                    .network("default")
                    .build())
                .scheduling(InstanceTemplateSchedulingArgs.builder()
                    .preemptible(false)
                    .automaticRestart(true)
                    .build())
                .metadata(Map.ofEntries(
                    Map.entry("gce-software-declaration", """
    {
      "softwareRecipes": [{
        "name": "install-gce-service-proxy-agent",
        "desired_state": "INSTALLED",
        "installSteps": [{
          "scriptRun": {
            "script": "#! /bin/bash\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\nsudo gsutil cp   gs://gce-service-proxy-"$ZONE"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz   "$SERVICE_PROXY_AGENT_DIRECTORY"   || sudo gsutil cp     gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz     "$SERVICE_PROXY_AGENT_DIRECTORY"\nsudo tar -xzf "$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent-0.2.tgz -C "$SERVICE_PROXY_AGENT_DIRECTORY"\n"$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent/service-proxy-agent-bootstrap.sh"
          }
        }]
      }]
    }
                    """),
                    Map.entry("gce-service-proxy", """
    {
      "api-version": "0.2",
      "proxy-spec": {
        "proxy-port": 15001,
        "network": "my-network",
        "tracing": "ON",
        "access-log": "/var/log/envoy/access.log"
      }
      "service": {
        "serving-ports": [80, 81]
      },
     "labels": {
       "app_name": "bookserver_app",
       "app_version": "STABLE"
      }
    }
                    """),
                    Map.entry("enable-guest-attributes", "true"),
                    Map.entry("enable-osconfig", "true")
                ))
                .serviceAccount(InstanceTemplateServiceAccountArgs.builder()
                    .email(default_.email())
                    .scopes("cloud-platform")
                    .build())
                .labels(Map.of("gce-service-proxy", "on"))
                .build());
    
        }
    }
    
    resources:
      foobar:
        type: gcp:compute:InstanceTemplate
        properties:
          name: appserver-template
          machineType: e2-medium
          canIpForward: false
          tags:
            - foo
            - bar
          disks:
            - sourceImage: ${myImage.selfLink}
              autoDelete: true
              boot: true
          networkInterfaces:
            - network: default
          scheduling:
            preemptible: false
            automaticRestart: true
          metadata:
            gce-software-declaration: |
              {
                "softwareRecipes": [{
                  "name": "install-gce-service-proxy-agent",
                  "desired_state": "INSTALLED",
                  "installSteps": [{
                    "scriptRun": {
                      "script": "#! /bin/bash\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\nsudo gsutil cp   gs://gce-service-proxy-"$ZONE"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz   "$SERVICE_PROXY_AGENT_DIRECTORY"   || sudo gsutil cp     gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz     "$SERVICE_PROXY_AGENT_DIRECTORY"\nsudo tar -xzf "$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent-0.2.tgz -C "$SERVICE_PROXY_AGENT_DIRECTORY"\n"$SERVICE_PROXY_AGENT_DIRECTORY"/service-proxy-agent/service-proxy-agent-bootstrap.sh"
                    }
                  }]
                }]
              }          
            gce-service-proxy: |
              {
                "api-version": "0.2",
                "proxy-spec": {
                  "proxy-port": 15001,
                  "network": "my-network",
                  "tracing": "ON",
                  "access-log": "/var/log/envoy/access.log"
                }
                "service": {
                  "serving-ports": [80, 81]
                },
               "labels": {
                 "app_name": "bookserver_app",
                 "app_version": "STABLE"
                }
              }          
            enable-guest-attributes: 'true'
            enable-osconfig: 'true'
          serviceAccount:
            email: ${default.email}
            scopes:
              - cloud-platform
          labels:
            gce-service-proxy: on
    variables:
      default:
        fn::invoke:
          Function: gcp:compute:getDefaultServiceAccount
          Arguments: {}
      myImage:
        fn::invoke:
          Function: gcp:compute:getImage
          Arguments:
            family: debian-11
            project: debian-cloud
    

    Confidential Computing

    Example with Confidential Mode activated.

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.serviceaccount.Account("default", {
        accountId: "my-custom-sa",
        displayName: "Custom SA for VM Instance",
    });
    const confidentialInstanceTemplate = new gcp.compute.InstanceTemplate("confidential_instance_template", {
        networkInterfaces: [{
            accessConfigs: [{}],
            network: "default",
        }],
        name: "my-confidential-instance-template",
        region: "us-central1",
        machineType: "n2d-standard-2",
        minCpuPlatform: "AMD Milan",
        confidentialInstanceConfig: {
            enableConfidentialCompute: true,
            confidentialInstanceType: "SEV",
        },
        disks: [{
            sourceImage: "ubuntu-os-cloud/ubuntu-2004-lts",
        }],
        serviceAccount: {
            email: _default.email,
            scopes: ["cloud-platform"],
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.serviceaccount.Account("default",
        account_id="my-custom-sa",
        display_name="Custom SA for VM Instance")
    confidential_instance_template = gcp.compute.InstanceTemplate("confidential_instance_template",
        network_interfaces=[{
            "access_configs": [{}],
            "network": "default",
        }],
        name="my-confidential-instance-template",
        region="us-central1",
        machine_type="n2d-standard-2",
        min_cpu_platform="AMD Milan",
        confidential_instance_config={
            "enable_confidential_compute": True,
            "confidential_instance_type": "SEV",
        },
        disks=[{
            "source_image": "ubuntu-os-cloud/ubuntu-2004-lts",
        }],
        service_account={
            "email": default.email,
            "scopes": ["cloud-platform"],
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{
    			AccountId:   pulumi.String("my-custom-sa"),
    			DisplayName: pulumi.String("Custom SA for VM Instance"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewInstanceTemplate(ctx, "confidential_instance_template", &compute.InstanceTemplateArgs{
    			NetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{
    				&compute.InstanceTemplateNetworkInterfaceArgs{
    					AccessConfigs: compute.InstanceTemplateNetworkInterfaceAccessConfigArray{
    						&compute.InstanceTemplateNetworkInterfaceAccessConfigArgs{},
    					},
    					Network: pulumi.String("default"),
    				},
    			},
    			Name:           pulumi.String("my-confidential-instance-template"),
    			Region:         pulumi.String("us-central1"),
    			MachineType:    pulumi.String("n2d-standard-2"),
    			MinCpuPlatform: pulumi.String("AMD Milan"),
    			ConfidentialInstanceConfig: &compute.InstanceTemplateConfidentialInstanceConfigArgs{
    				EnableConfidentialCompute: pulumi.Bool(true),
    				ConfidentialInstanceType:  pulumi.String("SEV"),
    			},
    			Disks: compute.InstanceTemplateDiskArray{
    				&compute.InstanceTemplateDiskArgs{
    					SourceImage: pulumi.String("ubuntu-os-cloud/ubuntu-2004-lts"),
    				},
    			},
    			ServiceAccount: &compute.InstanceTemplateServiceAccountArgs{
    				Email: _default.Email,
    				Scopes: pulumi.StringArray{
    					pulumi.String("cloud-platform"),
    				},
    			},
    		})
    		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.ServiceAccount.Account("default", new()
        {
            AccountId = "my-custom-sa",
            DisplayName = "Custom SA for VM Instance",
        });
    
        var confidentialInstanceTemplate = new Gcp.Compute.InstanceTemplate("confidential_instance_template", new()
        {
            NetworkInterfaces = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs
                {
                    AccessConfigs = new[]
                    {
                        null,
                    },
                    Network = "default",
                },
            },
            Name = "my-confidential-instance-template",
            Region = "us-central1",
            MachineType = "n2d-standard-2",
            MinCpuPlatform = "AMD Milan",
            ConfidentialInstanceConfig = new Gcp.Compute.Inputs.InstanceTemplateConfidentialInstanceConfigArgs
            {
                EnableConfidentialCompute = true,
                ConfidentialInstanceType = "SEV",
            },
            Disks = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
                {
                    SourceImage = "ubuntu-os-cloud/ubuntu-2004-lts",
                },
            },
            ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs
            {
                Email = @default.Email,
                Scopes = new[]
                {
                    "cloud-platform",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.serviceaccount.Account;
    import com.pulumi.gcp.serviceaccount.AccountArgs;
    import com.pulumi.gcp.compute.InstanceTemplate;
    import com.pulumi.gcp.compute.InstanceTemplateArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateConfidentialInstanceConfigArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;
    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 Account("default", AccountArgs.builder()
                .accountId("my-custom-sa")
                .displayName("Custom SA for VM Instance")
                .build());
    
            var confidentialInstanceTemplate = new InstanceTemplate("confidentialInstanceTemplate", InstanceTemplateArgs.builder()
                .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()
                    .accessConfigs()
                    .network("default")
                    .build())
                .name("my-confidential-instance-template")
                .region("us-central1")
                .machineType("n2d-standard-2")
                .minCpuPlatform("AMD Milan")
                .confidentialInstanceConfig(InstanceTemplateConfidentialInstanceConfigArgs.builder()
                    .enableConfidentialCompute(true)
                    .confidentialInstanceType("SEV")
                    .build())
                .disks(InstanceTemplateDiskArgs.builder()
                    .sourceImage("ubuntu-os-cloud/ubuntu-2004-lts")
                    .build())
                .serviceAccount(InstanceTemplateServiceAccountArgs.builder()
                    .email(default_.email())
                    .scopes("cloud-platform")
                    .build())
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:serviceaccount:Account
        properties:
          accountId: my-custom-sa
          displayName: Custom SA for VM Instance
      confidentialInstanceTemplate:
        type: gcp:compute:InstanceTemplate
        name: confidential_instance_template
        properties:
          networkInterfaces:
            - accessConfigs:
                - {}
              network: default
          name: my-confidential-instance-template
          region: us-central1
          machineType: n2d-standard-2
          minCpuPlatform: AMD Milan
          confidentialInstanceConfig:
            enableConfidentialCompute: true
            confidentialInstanceType: SEV
          disks:
            - sourceImage: ubuntu-os-cloud/ubuntu-2004-lts
          serviceAccount:
            email: ${default.email}
            scopes:
              - cloud-platform
    

    Deploying the Latest Image

    A common way to use instance templates and managed instance groups is to deploy the latest image in a family, usually the latest build of your application. There are two ways to do this in the provider, and they have their pros and cons. The difference ends up being in how “latest” is interpreted. You can either deploy the latest image available when the provider runs, or you can have each instance check what the latest image is when it’s being created, either as part of a scaling event or being rebuilt by the instance group manager.

    If you’re not sure, we recommend deploying the latest image available when the provider runs, because this means all the instances in your group will be based on the same image, always, and means that no upgrades or changes to your instances happen outside of a pulumi up. You can achieve this by using the gcp.compute.Image data source, which will retrieve the latest image on every pulumi apply, and will update the template to use that specific image:

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const myImage = gcp.compute.getImage({
        family: "debian-11",
        project: "debian-cloud",
    });
    const instanceTemplate = new gcp.compute.InstanceTemplate("instance_template", {
        namePrefix: "instance-template-",
        machineType: "e2-medium",
        region: "us-central1",
        disks: [{
            sourceImage: myImage.then(myImage => myImage.selfLink),
        }],
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    my_image = gcp.compute.get_image(family="debian-11",
        project="debian-cloud")
    instance_template = gcp.compute.InstanceTemplate("instance_template",
        name_prefix="instance-template-",
        machine_type="e2-medium",
        region="us-central1",
        disks=[{
            "source_image": my_image.self_link,
        }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		myImage, err := compute.LookupImage(ctx, &compute.LookupImageArgs{
    			Family:  pulumi.StringRef("debian-11"),
    			Project: pulumi.StringRef("debian-cloud"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = compute.NewInstanceTemplate(ctx, "instance_template", &compute.InstanceTemplateArgs{
    			NamePrefix:  pulumi.String("instance-template-"),
    			MachineType: pulumi.String("e2-medium"),
    			Region:      pulumi.String("us-central1"),
    			Disks: compute.InstanceTemplateDiskArray{
    				&compute.InstanceTemplateDiskArgs{
    					SourceImage: pulumi.String(myImage.SelfLink),
    				},
    			},
    		})
    		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 myImage = Gcp.Compute.GetImage.Invoke(new()
        {
            Family = "debian-11",
            Project = "debian-cloud",
        });
    
        var instanceTemplate = new Gcp.Compute.InstanceTemplate("instance_template", new()
        {
            NamePrefix = "instance-template-",
            MachineType = "e2-medium",
            Region = "us-central1",
            Disks = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
                {
                    SourceImage = myImage.Apply(getImageResult => getImageResult.SelfLink),
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.ComputeFunctions;
    import com.pulumi.gcp.compute.inputs.GetImageArgs;
    import com.pulumi.gcp.compute.InstanceTemplate;
    import com.pulumi.gcp.compute.InstanceTemplateArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()
                .family("debian-11")
                .project("debian-cloud")
                .build());
    
            var instanceTemplate = new InstanceTemplate("instanceTemplate", InstanceTemplateArgs.builder()
                .namePrefix("instance-template-")
                .machineType("e2-medium")
                .region("us-central1")
                .disks(InstanceTemplateDiskArgs.builder()
                    .sourceImage(myImage.applyValue(getImageResult -> getImageResult.selfLink()))
                    .build())
                .build());
    
        }
    }
    
    resources:
      instanceTemplate:
        type: gcp:compute:InstanceTemplate
        name: instance_template
        properties:
          namePrefix: instance-template-
          machineType: e2-medium
          region: us-central1
          disks:
            - sourceImage: ${myImage.selfLink}
    variables:
      myImage:
        fn::invoke:
          Function: gcp:compute:getImage
          Arguments:
            family: debian-11
            project: debian-cloud
    

    To have instances update to the latest on every scaling event or instance re-creation, use the family as the image for the disk, and it will use GCP’s default behavior, setting the image for the template to the family:

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const instanceTemplate = new gcp.compute.InstanceTemplate("instance_template", {
        namePrefix: "instance-template-",
        machineType: "e2-medium",
        region: "us-central1",
        disks: [{
            sourceImage: "debian-cloud/debian-11",
        }],
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    instance_template = gcp.compute.InstanceTemplate("instance_template",
        name_prefix="instance-template-",
        machine_type="e2-medium",
        region="us-central1",
        disks=[{
            "source_image": "debian-cloud/debian-11",
        }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := compute.NewInstanceTemplate(ctx, "instance_template", &compute.InstanceTemplateArgs{
    			NamePrefix:  pulumi.String("instance-template-"),
    			MachineType: pulumi.String("e2-medium"),
    			Region:      pulumi.String("us-central1"),
    			Disks: compute.InstanceTemplateDiskArray{
    				&compute.InstanceTemplateDiskArgs{
    					SourceImage: pulumi.String("debian-cloud/debian-11"),
    				},
    			},
    		})
    		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 instanceTemplate = new Gcp.Compute.InstanceTemplate("instance_template", new()
        {
            NamePrefix = "instance-template-",
            MachineType = "e2-medium",
            Region = "us-central1",
            Disks = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
                {
                    SourceImage = "debian-cloud/debian-11",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.compute.InstanceTemplate;
    import com.pulumi.gcp.compute.InstanceTemplateArgs;
    import com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;
    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 instanceTemplate = new InstanceTemplate("instanceTemplate", InstanceTemplateArgs.builder()
                .namePrefix("instance-template-")
                .machineType("e2-medium")
                .region("us-central1")
                .disks(InstanceTemplateDiskArgs.builder()
                    .sourceImage("debian-cloud/debian-11")
                    .build())
                .build());
    
        }
    }
    
    resources:
      instanceTemplate:
        type: gcp:compute:InstanceTemplate
        name: instance_template
        properties:
          namePrefix: instance-template-
          machineType: e2-medium
          region: us-central1
          disks:
            - sourceImage: debian-cloud/debian-11
    

    Create InstanceTemplate Resource

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

    Constructor syntax

    new InstanceTemplate(name: string, args: InstanceTemplateArgs, opts?: CustomResourceOptions);
    @overload
    def InstanceTemplate(resource_name: str,
                         args: InstanceTemplateArgs,
                         opts: Optional[ResourceOptions] = None)
    
    @overload
    def InstanceTemplate(resource_name: str,
                         opts: Optional[ResourceOptions] = None,
                         disks: Optional[Sequence[InstanceTemplateDiskArgs]] = None,
                         machine_type: Optional[str] = None,
                         name: Optional[str] = None,
                         confidential_instance_config: Optional[InstanceTemplateConfidentialInstanceConfigArgs] = None,
                         name_prefix: Optional[str] = None,
                         network_interfaces: Optional[Sequence[InstanceTemplateNetworkInterfaceArgs]] = None,
                         guest_accelerators: Optional[Sequence[InstanceTemplateGuestAcceleratorArgs]] = None,
                         instance_description: Optional[str] = None,
                         key_revocation_action_type: Optional[str] = None,
                         labels: Optional[Mapping[str, str]] = None,
                         can_ip_forward: Optional[bool] = None,
                         metadata: Optional[Mapping[str, str]] = None,
                         metadata_startup_script: Optional[str] = None,
                         min_cpu_platform: Optional[str] = None,
                         tags: Optional[Sequence[str]] = None,
                         description: Optional[str] = None,
                         enable_display: Optional[bool] = None,
                         network_performance_config: Optional[InstanceTemplateNetworkPerformanceConfigArgs] = None,
                         partner_metadata: Optional[Mapping[str, str]] = None,
                         project: Optional[str] = None,
                         region: Optional[str] = None,
                         reservation_affinity: Optional[InstanceTemplateReservationAffinityArgs] = None,
                         resource_manager_tags: Optional[Mapping[str, str]] = None,
                         resource_policies: Optional[str] = None,
                         scheduling: Optional[InstanceTemplateSchedulingArgs] = None,
                         service_account: Optional[InstanceTemplateServiceAccountArgs] = None,
                         shielded_instance_config: Optional[InstanceTemplateShieldedInstanceConfigArgs] = None,
                         advanced_machine_features: Optional[InstanceTemplateAdvancedMachineFeaturesArgs] = None)
    func NewInstanceTemplate(ctx *Context, name string, args InstanceTemplateArgs, opts ...ResourceOption) (*InstanceTemplate, error)
    public InstanceTemplate(string name, InstanceTemplateArgs args, CustomResourceOptions? opts = null)
    public InstanceTemplate(String name, InstanceTemplateArgs args)
    public InstanceTemplate(String name, InstanceTemplateArgs args, CustomResourceOptions options)
    
    type: gcp:compute:InstanceTemplate
    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 InstanceTemplateArgs
    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 InstanceTemplateArgs
    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 InstanceTemplateArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args InstanceTemplateArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args InstanceTemplateArgs
    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 instanceTemplateResource = new Gcp.Compute.InstanceTemplate("instanceTemplateResource", new()
    {
        Disks = new[]
        {
            new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
            {
                AutoDelete = false,
                Boot = false,
                DeviceName = "string",
                DiskEncryptionKey = new Gcp.Compute.Inputs.InstanceTemplateDiskDiskEncryptionKeyArgs
                {
                    KmsKeySelfLink = "string",
                },
                DiskName = "string",
                DiskSizeGb = 0,
                DiskType = "string",
                Interface = "string",
                Labels = 
                {
                    { "string", "string" },
                },
                Mode = "string",
                ProvisionedIops = 0,
                ProvisionedThroughput = 0,
                ResourceManagerTags = 
                {
                    { "string", "string" },
                },
                ResourcePolicies = "string",
                Source = "string",
                SourceImage = "string",
                SourceImageEncryptionKey = new Gcp.Compute.Inputs.InstanceTemplateDiskSourceImageEncryptionKeyArgs
                {
                    KmsKeySelfLink = "string",
                    KmsKeyServiceAccount = "string",
                },
                SourceSnapshot = "string",
                SourceSnapshotEncryptionKey = new Gcp.Compute.Inputs.InstanceTemplateDiskSourceSnapshotEncryptionKeyArgs
                {
                    KmsKeySelfLink = "string",
                    KmsKeyServiceAccount = "string",
                },
                Type = "string",
            },
        },
        MachineType = "string",
        Name = "string",
        ConfidentialInstanceConfig = new Gcp.Compute.Inputs.InstanceTemplateConfidentialInstanceConfigArgs
        {
            ConfidentialInstanceType = "string",
            EnableConfidentialCompute = false,
        },
        NamePrefix = "string",
        NetworkInterfaces = new[]
        {
            new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs
            {
                AccessConfigs = new[]
                {
                    new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceAccessConfigArgs
                    {
                        NatIp = "string",
                        NetworkTier = "string",
                        PublicPtrDomainName = "string",
                    },
                },
                AliasIpRanges = new[]
                {
                    new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceAliasIpRangeArgs
                    {
                        IpCidrRange = "string",
                        SubnetworkRangeName = "string",
                    },
                },
                InternalIpv6PrefixLength = 0,
                Ipv6AccessConfigs = new[]
                {
                    new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceIpv6AccessConfigArgs
                    {
                        NetworkTier = "string",
                        ExternalIpv6 = "string",
                        ExternalIpv6PrefixLength = "string",
                        Name = "string",
                        PublicPtrDomainName = "string",
                    },
                },
                Ipv6AccessType = "string",
                Ipv6Address = "string",
                Name = "string",
                Network = "string",
                NetworkAttachment = "string",
                NetworkIp = "string",
                NicType = "string",
                QueueCount = 0,
                StackType = "string",
                Subnetwork = "string",
                SubnetworkProject = "string",
            },
        },
        GuestAccelerators = new[]
        {
            new Gcp.Compute.Inputs.InstanceTemplateGuestAcceleratorArgs
            {
                Count = 0,
                Type = "string",
            },
        },
        InstanceDescription = "string",
        KeyRevocationActionType = "string",
        Labels = 
        {
            { "string", "string" },
        },
        CanIpForward = false,
        Metadata = 
        {
            { "string", "string" },
        },
        MetadataStartupScript = "string",
        MinCpuPlatform = "string",
        Tags = new[]
        {
            "string",
        },
        Description = "string",
        EnableDisplay = false,
        NetworkPerformanceConfig = new Gcp.Compute.Inputs.InstanceTemplateNetworkPerformanceConfigArgs
        {
            TotalEgressBandwidthTier = "string",
        },
        PartnerMetadata = 
        {
            { "string", "string" },
        },
        Project = "string",
        Region = "string",
        ReservationAffinity = new Gcp.Compute.Inputs.InstanceTemplateReservationAffinityArgs
        {
            Type = "string",
            SpecificReservation = new Gcp.Compute.Inputs.InstanceTemplateReservationAffinitySpecificReservationArgs
            {
                Key = "string",
                Values = new[]
                {
                    "string",
                },
            },
        },
        ResourceManagerTags = 
        {
            { "string", "string" },
        },
        ResourcePolicies = "string",
        Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs
        {
            AutomaticRestart = false,
            HostErrorTimeoutSeconds = 0,
            InstanceTerminationAction = "string",
            LocalSsdRecoveryTimeouts = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs
                {
                    Seconds = 0,
                    Nanos = 0,
                },
            },
            MaintenanceInterval = "string",
            MaxRunDuration = new Gcp.Compute.Inputs.InstanceTemplateSchedulingMaxRunDurationArgs
            {
                Seconds = 0,
                Nanos = 0,
            },
            MinNodeCpus = 0,
            NodeAffinities = new[]
            {
                new Gcp.Compute.Inputs.InstanceTemplateSchedulingNodeAffinityArgs
                {
                    Key = "string",
                    Operator = "string",
                    Values = new[]
                    {
                        "string",
                    },
                },
            },
            OnHostMaintenance = "string",
            OnInstanceStopAction = new Gcp.Compute.Inputs.InstanceTemplateSchedulingOnInstanceStopActionArgs
            {
                DiscardLocalSsd = false,
            },
            Preemptible = false,
            ProvisioningModel = "string",
        },
        ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs
        {
            Scopes = new[]
            {
                "string",
            },
            Email = "string",
        },
        ShieldedInstanceConfig = new Gcp.Compute.Inputs.InstanceTemplateShieldedInstanceConfigArgs
        {
            EnableIntegrityMonitoring = false,
            EnableSecureBoot = false,
            EnableVtpm = false,
        },
        AdvancedMachineFeatures = new Gcp.Compute.Inputs.InstanceTemplateAdvancedMachineFeaturesArgs
        {
            EnableNestedVirtualization = false,
            ThreadsPerCore = 0,
            TurboMode = "string",
            VisibleCoreCount = 0,
        },
    });
    
    example, err := compute.NewInstanceTemplate(ctx, "instanceTemplateResource", &compute.InstanceTemplateArgs{
    	Disks: compute.InstanceTemplateDiskArray{
    		&compute.InstanceTemplateDiskArgs{
    			AutoDelete: pulumi.Bool(false),
    			Boot:       pulumi.Bool(false),
    			DeviceName: pulumi.String("string"),
    			DiskEncryptionKey: &compute.InstanceTemplateDiskDiskEncryptionKeyArgs{
    				KmsKeySelfLink: pulumi.String("string"),
    			},
    			DiskName:   pulumi.String("string"),
    			DiskSizeGb: pulumi.Int(0),
    			DiskType:   pulumi.String("string"),
    			Interface:  pulumi.String("string"),
    			Labels: pulumi.StringMap{
    				"string": pulumi.String("string"),
    			},
    			Mode:                  pulumi.String("string"),
    			ProvisionedIops:       pulumi.Int(0),
    			ProvisionedThroughput: pulumi.Int(0),
    			ResourceManagerTags: pulumi.StringMap{
    				"string": pulumi.String("string"),
    			},
    			ResourcePolicies: pulumi.String("string"),
    			Source:           pulumi.String("string"),
    			SourceImage:      pulumi.String("string"),
    			SourceImageEncryptionKey: &compute.InstanceTemplateDiskSourceImageEncryptionKeyArgs{
    				KmsKeySelfLink:       pulumi.String("string"),
    				KmsKeyServiceAccount: pulumi.String("string"),
    			},
    			SourceSnapshot: pulumi.String("string"),
    			SourceSnapshotEncryptionKey: &compute.InstanceTemplateDiskSourceSnapshotEncryptionKeyArgs{
    				KmsKeySelfLink:       pulumi.String("string"),
    				KmsKeyServiceAccount: pulumi.String("string"),
    			},
    			Type: pulumi.String("string"),
    		},
    	},
    	MachineType: pulumi.String("string"),
    	Name:        pulumi.String("string"),
    	ConfidentialInstanceConfig: &compute.InstanceTemplateConfidentialInstanceConfigArgs{
    		ConfidentialInstanceType:  pulumi.String("string"),
    		EnableConfidentialCompute: pulumi.Bool(false),
    	},
    	NamePrefix: pulumi.String("string"),
    	NetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{
    		&compute.InstanceTemplateNetworkInterfaceArgs{
    			AccessConfigs: compute.InstanceTemplateNetworkInterfaceAccessConfigArray{
    				&compute.InstanceTemplateNetworkInterfaceAccessConfigArgs{
    					NatIp:               pulumi.String("string"),
    					NetworkTier:         pulumi.String("string"),
    					PublicPtrDomainName: pulumi.String("string"),
    				},
    			},
    			AliasIpRanges: compute.InstanceTemplateNetworkInterfaceAliasIpRangeArray{
    				&compute.InstanceTemplateNetworkInterfaceAliasIpRangeArgs{
    					IpCidrRange:         pulumi.String("string"),
    					SubnetworkRangeName: pulumi.String("string"),
    				},
    			},
    			InternalIpv6PrefixLength: pulumi.Int(0),
    			Ipv6AccessConfigs: compute.InstanceTemplateNetworkInterfaceIpv6AccessConfigArray{
    				&compute.InstanceTemplateNetworkInterfaceIpv6AccessConfigArgs{
    					NetworkTier:              pulumi.String("string"),
    					ExternalIpv6:             pulumi.String("string"),
    					ExternalIpv6PrefixLength: pulumi.String("string"),
    					Name:                     pulumi.String("string"),
    					PublicPtrDomainName:      pulumi.String("string"),
    				},
    			},
    			Ipv6AccessType:    pulumi.String("string"),
    			Ipv6Address:       pulumi.String("string"),
    			Name:              pulumi.String("string"),
    			Network:           pulumi.String("string"),
    			NetworkAttachment: pulumi.String("string"),
    			NetworkIp:         pulumi.String("string"),
    			NicType:           pulumi.String("string"),
    			QueueCount:        pulumi.Int(0),
    			StackType:         pulumi.String("string"),
    			Subnetwork:        pulumi.String("string"),
    			SubnetworkProject: pulumi.String("string"),
    		},
    	},
    	GuestAccelerators: compute.InstanceTemplateGuestAcceleratorArray{
    		&compute.InstanceTemplateGuestAcceleratorArgs{
    			Count: pulumi.Int(0),
    			Type:  pulumi.String("string"),
    		},
    	},
    	InstanceDescription:     pulumi.String("string"),
    	KeyRevocationActionType: pulumi.String("string"),
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	CanIpForward: pulumi.Bool(false),
    	Metadata: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	MetadataStartupScript: pulumi.String("string"),
    	MinCpuPlatform:        pulumi.String("string"),
    	Tags: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	Description:   pulumi.String("string"),
    	EnableDisplay: pulumi.Bool(false),
    	NetworkPerformanceConfig: &compute.InstanceTemplateNetworkPerformanceConfigArgs{
    		TotalEgressBandwidthTier: pulumi.String("string"),
    	},
    	PartnerMetadata: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	Project: pulumi.String("string"),
    	Region:  pulumi.String("string"),
    	ReservationAffinity: &compute.InstanceTemplateReservationAffinityArgs{
    		Type: pulumi.String("string"),
    		SpecificReservation: &compute.InstanceTemplateReservationAffinitySpecificReservationArgs{
    			Key: pulumi.String("string"),
    			Values: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    		},
    	},
    	ResourceManagerTags: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	ResourcePolicies: pulumi.String("string"),
    	Scheduling: &compute.InstanceTemplateSchedulingArgs{
    		AutomaticRestart:          pulumi.Bool(false),
    		HostErrorTimeoutSeconds:   pulumi.Int(0),
    		InstanceTerminationAction: pulumi.String("string"),
    		LocalSsdRecoveryTimeouts: compute.InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArray{
    			&compute.InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs{
    				Seconds: pulumi.Int(0),
    				Nanos:   pulumi.Int(0),
    			},
    		},
    		MaintenanceInterval: pulumi.String("string"),
    		MaxRunDuration: &compute.InstanceTemplateSchedulingMaxRunDurationArgs{
    			Seconds: pulumi.Int(0),
    			Nanos:   pulumi.Int(0),
    		},
    		MinNodeCpus: pulumi.Int(0),
    		NodeAffinities: compute.InstanceTemplateSchedulingNodeAffinityArray{
    			&compute.InstanceTemplateSchedulingNodeAffinityArgs{
    				Key:      pulumi.String("string"),
    				Operator: pulumi.String("string"),
    				Values: pulumi.StringArray{
    					pulumi.String("string"),
    				},
    			},
    		},
    		OnHostMaintenance: pulumi.String("string"),
    		OnInstanceStopAction: &compute.InstanceTemplateSchedulingOnInstanceStopActionArgs{
    			DiscardLocalSsd: pulumi.Bool(false),
    		},
    		Preemptible:       pulumi.Bool(false),
    		ProvisioningModel: pulumi.String("string"),
    	},
    	ServiceAccount: &compute.InstanceTemplateServiceAccountArgs{
    		Scopes: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		Email: pulumi.String("string"),
    	},
    	ShieldedInstanceConfig: &compute.InstanceTemplateShieldedInstanceConfigArgs{
    		EnableIntegrityMonitoring: pulumi.Bool(false),
    		EnableSecureBoot:          pulumi.Bool(false),
    		EnableVtpm:                pulumi.Bool(false),
    	},
    	AdvancedMachineFeatures: &compute.InstanceTemplateAdvancedMachineFeaturesArgs{
    		EnableNestedVirtualization: pulumi.Bool(false),
    		ThreadsPerCore:             pulumi.Int(0),
    		TurboMode:                  pulumi.String("string"),
    		VisibleCoreCount:           pulumi.Int(0),
    	},
    })
    
    var instanceTemplateResource = new InstanceTemplate("instanceTemplateResource", InstanceTemplateArgs.builder()
        .disks(InstanceTemplateDiskArgs.builder()
            .autoDelete(false)
            .boot(false)
            .deviceName("string")
            .diskEncryptionKey(InstanceTemplateDiskDiskEncryptionKeyArgs.builder()
                .kmsKeySelfLink("string")
                .build())
            .diskName("string")
            .diskSizeGb(0)
            .diskType("string")
            .interface_("string")
            .labels(Map.of("string", "string"))
            .mode("string")
            .provisionedIops(0)
            .provisionedThroughput(0)
            .resourceManagerTags(Map.of("string", "string"))
            .resourcePolicies("string")
            .source("string")
            .sourceImage("string")
            .sourceImageEncryptionKey(InstanceTemplateDiskSourceImageEncryptionKeyArgs.builder()
                .kmsKeySelfLink("string")
                .kmsKeyServiceAccount("string")
                .build())
            .sourceSnapshot("string")
            .sourceSnapshotEncryptionKey(InstanceTemplateDiskSourceSnapshotEncryptionKeyArgs.builder()
                .kmsKeySelfLink("string")
                .kmsKeyServiceAccount("string")
                .build())
            .type("string")
            .build())
        .machineType("string")
        .name("string")
        .confidentialInstanceConfig(InstanceTemplateConfidentialInstanceConfigArgs.builder()
            .confidentialInstanceType("string")
            .enableConfidentialCompute(false)
            .build())
        .namePrefix("string")
        .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()
            .accessConfigs(InstanceTemplateNetworkInterfaceAccessConfigArgs.builder()
                .natIp("string")
                .networkTier("string")
                .publicPtrDomainName("string")
                .build())
            .aliasIpRanges(InstanceTemplateNetworkInterfaceAliasIpRangeArgs.builder()
                .ipCidrRange("string")
                .subnetworkRangeName("string")
                .build())
            .internalIpv6PrefixLength(0)
            .ipv6AccessConfigs(InstanceTemplateNetworkInterfaceIpv6AccessConfigArgs.builder()
                .networkTier("string")
                .externalIpv6("string")
                .externalIpv6PrefixLength("string")
                .name("string")
                .publicPtrDomainName("string")
                .build())
            .ipv6AccessType("string")
            .ipv6Address("string")
            .name("string")
            .network("string")
            .networkAttachment("string")
            .networkIp("string")
            .nicType("string")
            .queueCount(0)
            .stackType("string")
            .subnetwork("string")
            .subnetworkProject("string")
            .build())
        .guestAccelerators(InstanceTemplateGuestAcceleratorArgs.builder()
            .count(0)
            .type("string")
            .build())
        .instanceDescription("string")
        .keyRevocationActionType("string")
        .labels(Map.of("string", "string"))
        .canIpForward(false)
        .metadata(Map.of("string", "string"))
        .metadataStartupScript("string")
        .minCpuPlatform("string")
        .tags("string")
        .description("string")
        .enableDisplay(false)
        .networkPerformanceConfig(InstanceTemplateNetworkPerformanceConfigArgs.builder()
            .totalEgressBandwidthTier("string")
            .build())
        .partnerMetadata(Map.of("string", "string"))
        .project("string")
        .region("string")
        .reservationAffinity(InstanceTemplateReservationAffinityArgs.builder()
            .type("string")
            .specificReservation(InstanceTemplateReservationAffinitySpecificReservationArgs.builder()
                .key("string")
                .values("string")
                .build())
            .build())
        .resourceManagerTags(Map.of("string", "string"))
        .resourcePolicies("string")
        .scheduling(InstanceTemplateSchedulingArgs.builder()
            .automaticRestart(false)
            .hostErrorTimeoutSeconds(0)
            .instanceTerminationAction("string")
            .localSsdRecoveryTimeouts(InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs.builder()
                .seconds(0)
                .nanos(0)
                .build())
            .maintenanceInterval("string")
            .maxRunDuration(InstanceTemplateSchedulingMaxRunDurationArgs.builder()
                .seconds(0)
                .nanos(0)
                .build())
            .minNodeCpus(0)
            .nodeAffinities(InstanceTemplateSchedulingNodeAffinityArgs.builder()
                .key("string")
                .operator("string")
                .values("string")
                .build())
            .onHostMaintenance("string")
            .onInstanceStopAction(InstanceTemplateSchedulingOnInstanceStopActionArgs.builder()
                .discardLocalSsd(false)
                .build())
            .preemptible(false)
            .provisioningModel("string")
            .build())
        .serviceAccount(InstanceTemplateServiceAccountArgs.builder()
            .scopes("string")
            .email("string")
            .build())
        .shieldedInstanceConfig(InstanceTemplateShieldedInstanceConfigArgs.builder()
            .enableIntegrityMonitoring(false)
            .enableSecureBoot(false)
            .enableVtpm(false)
            .build())
        .advancedMachineFeatures(InstanceTemplateAdvancedMachineFeaturesArgs.builder()
            .enableNestedVirtualization(false)
            .threadsPerCore(0)
            .turboMode("string")
            .visibleCoreCount(0)
            .build())
        .build());
    
    instance_template_resource = gcp.compute.InstanceTemplate("instanceTemplateResource",
        disks=[{
            "auto_delete": False,
            "boot": False,
            "device_name": "string",
            "disk_encryption_key": {
                "kms_key_self_link": "string",
            },
            "disk_name": "string",
            "disk_size_gb": 0,
            "disk_type": "string",
            "interface": "string",
            "labels": {
                "string": "string",
            },
            "mode": "string",
            "provisioned_iops": 0,
            "provisioned_throughput": 0,
            "resource_manager_tags": {
                "string": "string",
            },
            "resource_policies": "string",
            "source": "string",
            "source_image": "string",
            "source_image_encryption_key": {
                "kms_key_self_link": "string",
                "kms_key_service_account": "string",
            },
            "source_snapshot": "string",
            "source_snapshot_encryption_key": {
                "kms_key_self_link": "string",
                "kms_key_service_account": "string",
            },
            "type": "string",
        }],
        machine_type="string",
        name="string",
        confidential_instance_config={
            "confidential_instance_type": "string",
            "enable_confidential_compute": False,
        },
        name_prefix="string",
        network_interfaces=[{
            "access_configs": [{
                "nat_ip": "string",
                "network_tier": "string",
                "public_ptr_domain_name": "string",
            }],
            "alias_ip_ranges": [{
                "ip_cidr_range": "string",
                "subnetwork_range_name": "string",
            }],
            "internal_ipv6_prefix_length": 0,
            "ipv6_access_configs": [{
                "network_tier": "string",
                "external_ipv6": "string",
                "external_ipv6_prefix_length": "string",
                "name": "string",
                "public_ptr_domain_name": "string",
            }],
            "ipv6_access_type": "string",
            "ipv6_address": "string",
            "name": "string",
            "network": "string",
            "network_attachment": "string",
            "network_ip": "string",
            "nic_type": "string",
            "queue_count": 0,
            "stack_type": "string",
            "subnetwork": "string",
            "subnetwork_project": "string",
        }],
        guest_accelerators=[{
            "count": 0,
            "type": "string",
        }],
        instance_description="string",
        key_revocation_action_type="string",
        labels={
            "string": "string",
        },
        can_ip_forward=False,
        metadata={
            "string": "string",
        },
        metadata_startup_script="string",
        min_cpu_platform="string",
        tags=["string"],
        description="string",
        enable_display=False,
        network_performance_config={
            "total_egress_bandwidth_tier": "string",
        },
        partner_metadata={
            "string": "string",
        },
        project="string",
        region="string",
        reservation_affinity={
            "type": "string",
            "specific_reservation": {
                "key": "string",
                "values": ["string"],
            },
        },
        resource_manager_tags={
            "string": "string",
        },
        resource_policies="string",
        scheduling={
            "automatic_restart": False,
            "host_error_timeout_seconds": 0,
            "instance_termination_action": "string",
            "local_ssd_recovery_timeouts": [{
                "seconds": 0,
                "nanos": 0,
            }],
            "maintenance_interval": "string",
            "max_run_duration": {
                "seconds": 0,
                "nanos": 0,
            },
            "min_node_cpus": 0,
            "node_affinities": [{
                "key": "string",
                "operator": "string",
                "values": ["string"],
            }],
            "on_host_maintenance": "string",
            "on_instance_stop_action": {
                "discard_local_ssd": False,
            },
            "preemptible": False,
            "provisioning_model": "string",
        },
        service_account={
            "scopes": ["string"],
            "email": "string",
        },
        shielded_instance_config={
            "enable_integrity_monitoring": False,
            "enable_secure_boot": False,
            "enable_vtpm": False,
        },
        advanced_machine_features={
            "enable_nested_virtualization": False,
            "threads_per_core": 0,
            "turbo_mode": "string",
            "visible_core_count": 0,
        })
    
    const instanceTemplateResource = new gcp.compute.InstanceTemplate("instanceTemplateResource", {
        disks: [{
            autoDelete: false,
            boot: false,
            deviceName: "string",
            diskEncryptionKey: {
                kmsKeySelfLink: "string",
            },
            diskName: "string",
            diskSizeGb: 0,
            diskType: "string",
            "interface": "string",
            labels: {
                string: "string",
            },
            mode: "string",
            provisionedIops: 0,
            provisionedThroughput: 0,
            resourceManagerTags: {
                string: "string",
            },
            resourcePolicies: "string",
            source: "string",
            sourceImage: "string",
            sourceImageEncryptionKey: {
                kmsKeySelfLink: "string",
                kmsKeyServiceAccount: "string",
            },
            sourceSnapshot: "string",
            sourceSnapshotEncryptionKey: {
                kmsKeySelfLink: "string",
                kmsKeyServiceAccount: "string",
            },
            type: "string",
        }],
        machineType: "string",
        name: "string",
        confidentialInstanceConfig: {
            confidentialInstanceType: "string",
            enableConfidentialCompute: false,
        },
        namePrefix: "string",
        networkInterfaces: [{
            accessConfigs: [{
                natIp: "string",
                networkTier: "string",
                publicPtrDomainName: "string",
            }],
            aliasIpRanges: [{
                ipCidrRange: "string",
                subnetworkRangeName: "string",
            }],
            internalIpv6PrefixLength: 0,
            ipv6AccessConfigs: [{
                networkTier: "string",
                externalIpv6: "string",
                externalIpv6PrefixLength: "string",
                name: "string",
                publicPtrDomainName: "string",
            }],
            ipv6AccessType: "string",
            ipv6Address: "string",
            name: "string",
            network: "string",
            networkAttachment: "string",
            networkIp: "string",
            nicType: "string",
            queueCount: 0,
            stackType: "string",
            subnetwork: "string",
            subnetworkProject: "string",
        }],
        guestAccelerators: [{
            count: 0,
            type: "string",
        }],
        instanceDescription: "string",
        keyRevocationActionType: "string",
        labels: {
            string: "string",
        },
        canIpForward: false,
        metadata: {
            string: "string",
        },
        metadataStartupScript: "string",
        minCpuPlatform: "string",
        tags: ["string"],
        description: "string",
        enableDisplay: false,
        networkPerformanceConfig: {
            totalEgressBandwidthTier: "string",
        },
        partnerMetadata: {
            string: "string",
        },
        project: "string",
        region: "string",
        reservationAffinity: {
            type: "string",
            specificReservation: {
                key: "string",
                values: ["string"],
            },
        },
        resourceManagerTags: {
            string: "string",
        },
        resourcePolicies: "string",
        scheduling: {
            automaticRestart: false,
            hostErrorTimeoutSeconds: 0,
            instanceTerminationAction: "string",
            localSsdRecoveryTimeouts: [{
                seconds: 0,
                nanos: 0,
            }],
            maintenanceInterval: "string",
            maxRunDuration: {
                seconds: 0,
                nanos: 0,
            },
            minNodeCpus: 0,
            nodeAffinities: [{
                key: "string",
                operator: "string",
                values: ["string"],
            }],
            onHostMaintenance: "string",
            onInstanceStopAction: {
                discardLocalSsd: false,
            },
            preemptible: false,
            provisioningModel: "string",
        },
        serviceAccount: {
            scopes: ["string"],
            email: "string",
        },
        shieldedInstanceConfig: {
            enableIntegrityMonitoring: false,
            enableSecureBoot: false,
            enableVtpm: false,
        },
        advancedMachineFeatures: {
            enableNestedVirtualization: false,
            threadsPerCore: 0,
            turboMode: "string",
            visibleCoreCount: 0,
        },
    });
    
    type: gcp:compute:InstanceTemplate
    properties:
        advancedMachineFeatures:
            enableNestedVirtualization: false
            threadsPerCore: 0
            turboMode: string
            visibleCoreCount: 0
        canIpForward: false
        confidentialInstanceConfig:
            confidentialInstanceType: string
            enableConfidentialCompute: false
        description: string
        disks:
            - autoDelete: false
              boot: false
              deviceName: string
              diskEncryptionKey:
                kmsKeySelfLink: string
              diskName: string
              diskSizeGb: 0
              diskType: string
              interface: string
              labels:
                string: string
              mode: string
              provisionedIops: 0
              provisionedThroughput: 0
              resourceManagerTags:
                string: string
              resourcePolicies: string
              source: string
              sourceImage: string
              sourceImageEncryptionKey:
                kmsKeySelfLink: string
                kmsKeyServiceAccount: string
              sourceSnapshot: string
              sourceSnapshotEncryptionKey:
                kmsKeySelfLink: string
                kmsKeyServiceAccount: string
              type: string
        enableDisplay: false
        guestAccelerators:
            - count: 0
              type: string
        instanceDescription: string
        keyRevocationActionType: string
        labels:
            string: string
        machineType: string
        metadata:
            string: string
        metadataStartupScript: string
        minCpuPlatform: string
        name: string
        namePrefix: string
        networkInterfaces:
            - accessConfigs:
                - natIp: string
                  networkTier: string
                  publicPtrDomainName: string
              aliasIpRanges:
                - ipCidrRange: string
                  subnetworkRangeName: string
              internalIpv6PrefixLength: 0
              ipv6AccessConfigs:
                - externalIpv6: string
                  externalIpv6PrefixLength: string
                  name: string
                  networkTier: string
                  publicPtrDomainName: string
              ipv6AccessType: string
              ipv6Address: string
              name: string
              network: string
              networkAttachment: string
              networkIp: string
              nicType: string
              queueCount: 0
              stackType: string
              subnetwork: string
              subnetworkProject: string
        networkPerformanceConfig:
            totalEgressBandwidthTier: string
        partnerMetadata:
            string: string
        project: string
        region: string
        reservationAffinity:
            specificReservation:
                key: string
                values:
                    - string
            type: string
        resourceManagerTags:
            string: string
        resourcePolicies: string
        scheduling:
            automaticRestart: false
            hostErrorTimeoutSeconds: 0
            instanceTerminationAction: string
            localSsdRecoveryTimeouts:
                - nanos: 0
                  seconds: 0
            maintenanceInterval: string
            maxRunDuration:
                nanos: 0
                seconds: 0
            minNodeCpus: 0
            nodeAffinities:
                - key: string
                  operator: string
                  values:
                    - string
            onHostMaintenance: string
            onInstanceStopAction:
                discardLocalSsd: false
            preemptible: false
            provisioningModel: string
        serviceAccount:
            email: string
            scopes:
                - string
        shieldedInstanceConfig:
            enableIntegrityMonitoring: false
            enableSecureBoot: false
            enableVtpm: false
        tags:
            - string
    

    InstanceTemplate 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 InstanceTemplate resource accepts the following input properties:

    Disks List<InstanceTemplateDisk>
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    MachineType string

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    AdvancedMachineFeatures InstanceTemplateAdvancedMachineFeatures
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    CanIpForward bool
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    ConfidentialInstanceConfig InstanceTemplateConfidentialInstanceConfig
    Enable Confidential Mode on this VM. Structure is documented below
    Description string
    A brief description of this resource.
    EnableDisplay bool
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    GuestAccelerators List<InstanceTemplateGuestAccelerator>
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    InstanceDescription string
    A brief description to use for instances created from this template.
    KeyRevocationActionType string
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    Labels Dictionary<string, string>

    A set of key/value label pairs to assign to instances created from this template.

    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.

    Metadata Dictionary<string, string>
    Metadata key/value pairs to make available from within instances created from this template.
    MetadataStartupScript string
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    MinCpuPlatform string
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    NamePrefix string

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    NetworkInterfaces List<InstanceTemplateNetworkInterface>
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    NetworkPerformanceConfig InstanceTemplateNetworkPerformanceConfig
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    PartnerMetadata Dictionary<string, string>
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    Region string
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    ReservationAffinity InstanceTemplateReservationAffinity
    Specifies the reservations that this instance can consume from. Structure is documented below.
    ResourceManagerTags Dictionary<string, string>
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    ResourcePolicies string
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    Scheduling InstanceTemplateScheduling
    The scheduling strategy to use. More details about this configuration option are detailed below.
    ServiceAccount InstanceTemplateServiceAccount
    Service account to attach to the instance. Structure is documented below.
    ShieldedInstanceConfig InstanceTemplateShieldedInstanceConfig
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    Tags List<string>
    Tags to attach to the instance.
    Disks []InstanceTemplateDiskArgs
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    MachineType string

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    AdvancedMachineFeatures InstanceTemplateAdvancedMachineFeaturesArgs
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    CanIpForward bool
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    ConfidentialInstanceConfig InstanceTemplateConfidentialInstanceConfigArgs
    Enable Confidential Mode on this VM. Structure is documented below
    Description string
    A brief description of this resource.
    EnableDisplay bool
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    GuestAccelerators []InstanceTemplateGuestAcceleratorArgs
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    InstanceDescription string
    A brief description to use for instances created from this template.
    KeyRevocationActionType string
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    Labels map[string]string

    A set of key/value label pairs to assign to instances created from this template.

    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.

    Metadata map[string]string
    Metadata key/value pairs to make available from within instances created from this template.
    MetadataStartupScript string
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    MinCpuPlatform string
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    NamePrefix string

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    NetworkInterfaces []InstanceTemplateNetworkInterfaceArgs
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    NetworkPerformanceConfig InstanceTemplateNetworkPerformanceConfigArgs
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    PartnerMetadata map[string]string
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    Region string
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    ReservationAffinity InstanceTemplateReservationAffinityArgs
    Specifies the reservations that this instance can consume from. Structure is documented below.
    ResourceManagerTags map[string]string
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    ResourcePolicies string
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    Scheduling InstanceTemplateSchedulingArgs
    The scheduling strategy to use. More details about this configuration option are detailed below.
    ServiceAccount InstanceTemplateServiceAccountArgs
    Service account to attach to the instance. Structure is documented below.
    ShieldedInstanceConfig InstanceTemplateShieldedInstanceConfigArgs
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    Tags []string
    Tags to attach to the instance.
    disks List<InstanceTemplateDisk>
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    machineType String

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    advancedMachineFeatures InstanceTemplateAdvancedMachineFeatures
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    canIpForward Boolean
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidentialInstanceConfig InstanceTemplateConfidentialInstanceConfig
    Enable Confidential Mode on this VM. Structure is documented below
    description String
    A brief description of this resource.
    enableDisplay Boolean
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guestAccelerators List<InstanceTemplateGuestAccelerator>
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instanceDescription String
    A brief description to use for instances created from this template.
    keyRevocationActionType String
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels Map<String,String>

    A set of key/value label pairs to assign to instances created from this template.

    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.

    metadata Map<String,String>
    Metadata key/value pairs to make available from within instances created from this template.
    metadataStartupScript String
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    minCpuPlatform String
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    namePrefix String

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    networkInterfaces List<InstanceTemplateNetworkInterface>
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    networkPerformanceConfig InstanceTemplateNetworkPerformanceConfig
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partnerMetadata Map<String,String>
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region String
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservationAffinity InstanceTemplateReservationAffinity
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resourceManagerTags Map<String,String>
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies String
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling InstanceTemplateScheduling
    The scheduling strategy to use. More details about this configuration option are detailed below.
    serviceAccount InstanceTemplateServiceAccount
    Service account to attach to the instance. Structure is documented below.
    shieldedInstanceConfig InstanceTemplateShieldedInstanceConfig
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags List<String>
    Tags to attach to the instance.
    disks InstanceTemplateDisk[]
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    machineType string

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    advancedMachineFeatures InstanceTemplateAdvancedMachineFeatures
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    canIpForward boolean
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidentialInstanceConfig InstanceTemplateConfidentialInstanceConfig
    Enable Confidential Mode on this VM. Structure is documented below
    description string
    A brief description of this resource.
    enableDisplay boolean
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guestAccelerators InstanceTemplateGuestAccelerator[]
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instanceDescription string
    A brief description to use for instances created from this template.
    keyRevocationActionType string
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels {[key: string]: string}

    A set of key/value label pairs to assign to instances created from this template.

    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.

    metadata {[key: string]: string}
    Metadata key/value pairs to make available from within instances created from this template.
    metadataStartupScript string
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    minCpuPlatform string
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    namePrefix string

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    networkInterfaces InstanceTemplateNetworkInterface[]
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    networkPerformanceConfig InstanceTemplateNetworkPerformanceConfig
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partnerMetadata {[key: string]: string}
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region string
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservationAffinity InstanceTemplateReservationAffinity
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resourceManagerTags {[key: string]: string}
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies string
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling InstanceTemplateScheduling
    The scheduling strategy to use. More details about this configuration option are detailed below.
    serviceAccount InstanceTemplateServiceAccount
    Service account to attach to the instance. Structure is documented below.
    shieldedInstanceConfig InstanceTemplateShieldedInstanceConfig
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags string[]
    Tags to attach to the instance.
    disks Sequence[InstanceTemplateDiskArgs]
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    machine_type str

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    advanced_machine_features InstanceTemplateAdvancedMachineFeaturesArgs
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    can_ip_forward bool
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidential_instance_config InstanceTemplateConfidentialInstanceConfigArgs
    Enable Confidential Mode on this VM. Structure is documented below
    description str
    A brief description of this resource.
    enable_display bool
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guest_accelerators Sequence[InstanceTemplateGuestAcceleratorArgs]
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instance_description str
    A brief description to use for instances created from this template.
    key_revocation_action_type str
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels Mapping[str, str]

    A set of key/value label pairs to assign to instances created from this template.

    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.

    metadata Mapping[str, str]
    Metadata key/value pairs to make available from within instances created from this template.
    metadata_startup_script str
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    min_cpu_platform str
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name str
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    name_prefix str

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    network_interfaces Sequence[InstanceTemplateNetworkInterfaceArgs]
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    network_performance_config InstanceTemplateNetworkPerformanceConfigArgs
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partner_metadata Mapping[str, str]
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region str
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservation_affinity InstanceTemplateReservationAffinityArgs
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resource_manager_tags Mapping[str, str]
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resource_policies str
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling InstanceTemplateSchedulingArgs
    The scheduling strategy to use. More details about this configuration option are detailed below.
    service_account InstanceTemplateServiceAccountArgs
    Service account to attach to the instance. Structure is documented below.
    shielded_instance_config InstanceTemplateShieldedInstanceConfigArgs
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags Sequence[str]
    Tags to attach to the instance.
    disks List<Property Map>
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    machineType String

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    advancedMachineFeatures Property Map
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    canIpForward Boolean
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidentialInstanceConfig Property Map
    Enable Confidential Mode on this VM. Structure is documented below
    description String
    A brief description of this resource.
    enableDisplay Boolean
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guestAccelerators List<Property Map>
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instanceDescription String
    A brief description to use for instances created from this template.
    keyRevocationActionType String
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels Map<String>

    A set of key/value label pairs to assign to instances created from this template.

    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.

    metadata Map<String>
    Metadata key/value pairs to make available from within instances created from this template.
    metadataStartupScript String
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    minCpuPlatform String
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    namePrefix String

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    networkInterfaces List<Property Map>
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    networkPerformanceConfig Property Map
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partnerMetadata Map<String>
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region String
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservationAffinity Property Map
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resourceManagerTags Map<String>
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies String
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling Property Map
    The scheduling strategy to use. More details about this configuration option are detailed below.
    serviceAccount Property Map
    Service account to attach to the instance. Structure is documented below.
    shieldedInstanceConfig Property Map
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags List<String>
    Tags to attach to the instance.

    Outputs

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

    CreationTimestamp string
    Creation timestamp in RFC3339 text format.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Id string
    The provider-assigned unique ID for this managed resource.
    MetadataFingerprint string
    The unique fingerprint of the metadata.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    SelfLink string
    The URI of the created resource.
    SelfLinkUnique string
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    TagsFingerprint string
    The unique fingerprint of the tags.
    CreationTimestamp string
    Creation timestamp in RFC3339 text format.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Id string
    The provider-assigned unique ID for this managed resource.
    MetadataFingerprint string
    The unique fingerprint of the metadata.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    SelfLink string
    The URI of the created resource.
    SelfLinkUnique string
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    TagsFingerprint string
    The unique fingerprint of the tags.
    creationTimestamp String
    Creation timestamp in RFC3339 text format.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id String
    The provider-assigned unique ID for this managed resource.
    metadataFingerprint String
    The unique fingerprint of the metadata.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    selfLink String
    The URI of the created resource.
    selfLinkUnique String
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    tagsFingerprint String
    The unique fingerprint of the tags.
    creationTimestamp string
    Creation timestamp in RFC3339 text format.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id string
    The provider-assigned unique ID for this managed resource.
    metadataFingerprint string
    The unique fingerprint of the metadata.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    selfLink string
    The URI of the created resource.
    selfLinkUnique string
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    tagsFingerprint string
    The unique fingerprint of the tags.
    creation_timestamp str
    Creation timestamp in RFC3339 text format.
    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.
    id str
    The provider-assigned unique ID for this managed resource.
    metadata_fingerprint str
    The unique fingerprint of the metadata.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    self_link str
    The URI of the created resource.
    self_link_unique str
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    tags_fingerprint str
    The unique fingerprint of the tags.
    creationTimestamp String
    Creation timestamp in RFC3339 text format.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id String
    The provider-assigned unique ID for this managed resource.
    metadataFingerprint String
    The unique fingerprint of the metadata.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    selfLink String
    The URI of the created resource.
    selfLinkUnique String
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    tagsFingerprint String
    The unique fingerprint of the tags.

    Look up Existing InstanceTemplate Resource

    Get an existing InstanceTemplate 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?: InstanceTemplateState, opts?: CustomResourceOptions): InstanceTemplate
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            advanced_machine_features: Optional[InstanceTemplateAdvancedMachineFeaturesArgs] = None,
            can_ip_forward: Optional[bool] = None,
            confidential_instance_config: Optional[InstanceTemplateConfidentialInstanceConfigArgs] = None,
            creation_timestamp: Optional[str] = None,
            description: Optional[str] = None,
            disks: Optional[Sequence[InstanceTemplateDiskArgs]] = None,
            effective_labels: Optional[Mapping[str, str]] = None,
            enable_display: Optional[bool] = None,
            guest_accelerators: Optional[Sequence[InstanceTemplateGuestAcceleratorArgs]] = None,
            instance_description: Optional[str] = None,
            key_revocation_action_type: Optional[str] = None,
            labels: Optional[Mapping[str, str]] = None,
            machine_type: Optional[str] = None,
            metadata: Optional[Mapping[str, str]] = None,
            metadata_fingerprint: Optional[str] = None,
            metadata_startup_script: Optional[str] = None,
            min_cpu_platform: Optional[str] = None,
            name: Optional[str] = None,
            name_prefix: Optional[str] = None,
            network_interfaces: Optional[Sequence[InstanceTemplateNetworkInterfaceArgs]] = None,
            network_performance_config: Optional[InstanceTemplateNetworkPerformanceConfigArgs] = None,
            partner_metadata: Optional[Mapping[str, str]] = None,
            project: Optional[str] = None,
            pulumi_labels: Optional[Mapping[str, str]] = None,
            region: Optional[str] = None,
            reservation_affinity: Optional[InstanceTemplateReservationAffinityArgs] = None,
            resource_manager_tags: Optional[Mapping[str, str]] = None,
            resource_policies: Optional[str] = None,
            scheduling: Optional[InstanceTemplateSchedulingArgs] = None,
            self_link: Optional[str] = None,
            self_link_unique: Optional[str] = None,
            service_account: Optional[InstanceTemplateServiceAccountArgs] = None,
            shielded_instance_config: Optional[InstanceTemplateShieldedInstanceConfigArgs] = None,
            tags: Optional[Sequence[str]] = None,
            tags_fingerprint: Optional[str] = None) -> InstanceTemplate
    func GetInstanceTemplate(ctx *Context, name string, id IDInput, state *InstanceTemplateState, opts ...ResourceOption) (*InstanceTemplate, error)
    public static InstanceTemplate Get(string name, Input<string> id, InstanceTemplateState? state, CustomResourceOptions? opts = null)
    public static InstanceTemplate get(String name, Output<String> id, InstanceTemplateState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AdvancedMachineFeatures InstanceTemplateAdvancedMachineFeatures
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    CanIpForward bool
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    ConfidentialInstanceConfig InstanceTemplateConfidentialInstanceConfig
    Enable Confidential Mode on this VM. Structure is documented below
    CreationTimestamp string
    Creation timestamp in RFC3339 text format.
    Description string
    A brief description of this resource.
    Disks List<InstanceTemplateDisk>
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EnableDisplay bool
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    GuestAccelerators List<InstanceTemplateGuestAccelerator>
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    InstanceDescription string
    A brief description to use for instances created from this template.
    KeyRevocationActionType string
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    Labels Dictionary<string, string>

    A set of key/value label pairs to assign to instances created from this template.

    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.

    MachineType string

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    Metadata Dictionary<string, string>
    Metadata key/value pairs to make available from within instances created from this template.
    MetadataFingerprint string
    The unique fingerprint of the metadata.
    MetadataStartupScript string
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    MinCpuPlatform string
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    NamePrefix string

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    NetworkInterfaces List<InstanceTemplateNetworkInterface>
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    NetworkPerformanceConfig InstanceTemplateNetworkPerformanceConfig
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    PartnerMetadata Dictionary<string, string>
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    Region string
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    ReservationAffinity InstanceTemplateReservationAffinity
    Specifies the reservations that this instance can consume from. Structure is documented below.
    ResourceManagerTags Dictionary<string, string>
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    ResourcePolicies string
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    Scheduling InstanceTemplateScheduling
    The scheduling strategy to use. More details about this configuration option are detailed below.
    SelfLink string
    The URI of the created resource.
    SelfLinkUnique string
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    ServiceAccount InstanceTemplateServiceAccount
    Service account to attach to the instance. Structure is documented below.
    ShieldedInstanceConfig InstanceTemplateShieldedInstanceConfig
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    Tags List<string>
    Tags to attach to the instance.
    TagsFingerprint string
    The unique fingerprint of the tags.
    AdvancedMachineFeatures InstanceTemplateAdvancedMachineFeaturesArgs
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    CanIpForward bool
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    ConfidentialInstanceConfig InstanceTemplateConfidentialInstanceConfigArgs
    Enable Confidential Mode on this VM. Structure is documented below
    CreationTimestamp string
    Creation timestamp in RFC3339 text format.
    Description string
    A brief description of this resource.
    Disks []InstanceTemplateDiskArgs
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EnableDisplay bool
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    GuestAccelerators []InstanceTemplateGuestAcceleratorArgs
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    InstanceDescription string
    A brief description to use for instances created from this template.
    KeyRevocationActionType string
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    Labels map[string]string

    A set of key/value label pairs to assign to instances created from this template.

    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.

    MachineType string

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    Metadata map[string]string
    Metadata key/value pairs to make available from within instances created from this template.
    MetadataFingerprint string
    The unique fingerprint of the metadata.
    MetadataStartupScript string
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    MinCpuPlatform string
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    NamePrefix string

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    NetworkInterfaces []InstanceTemplateNetworkInterfaceArgs
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    NetworkPerformanceConfig InstanceTemplateNetworkPerformanceConfigArgs
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    PartnerMetadata map[string]string
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    Region string
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    ReservationAffinity InstanceTemplateReservationAffinityArgs
    Specifies the reservations that this instance can consume from. Structure is documented below.
    ResourceManagerTags map[string]string
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    ResourcePolicies string
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    Scheduling InstanceTemplateSchedulingArgs
    The scheduling strategy to use. More details about this configuration option are detailed below.
    SelfLink string
    The URI of the created resource.
    SelfLinkUnique string
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    ServiceAccount InstanceTemplateServiceAccountArgs
    Service account to attach to the instance. Structure is documented below.
    ShieldedInstanceConfig InstanceTemplateShieldedInstanceConfigArgs
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    Tags []string
    Tags to attach to the instance.
    TagsFingerprint string
    The unique fingerprint of the tags.
    advancedMachineFeatures InstanceTemplateAdvancedMachineFeatures
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    canIpForward Boolean
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidentialInstanceConfig InstanceTemplateConfidentialInstanceConfig
    Enable Confidential Mode on this VM. Structure is documented below
    creationTimestamp String
    Creation timestamp in RFC3339 text format.
    description String
    A brief description of this resource.
    disks List<InstanceTemplateDisk>
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    enableDisplay Boolean
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guestAccelerators List<InstanceTemplateGuestAccelerator>
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instanceDescription String
    A brief description to use for instances created from this template.
    keyRevocationActionType String
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels Map<String,String>

    A set of key/value label pairs to assign to instances created from this template.

    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.

    machineType String

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    metadata Map<String,String>
    Metadata key/value pairs to make available from within instances created from this template.
    metadataFingerprint String
    The unique fingerprint of the metadata.
    metadataStartupScript String
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    minCpuPlatform String
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    namePrefix String

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    networkInterfaces List<InstanceTemplateNetworkInterface>
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    networkPerformanceConfig InstanceTemplateNetworkPerformanceConfig
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partnerMetadata Map<String,String>
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region String
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservationAffinity InstanceTemplateReservationAffinity
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resourceManagerTags Map<String,String>
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies String
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling InstanceTemplateScheduling
    The scheduling strategy to use. More details about this configuration option are detailed below.
    selfLink String
    The URI of the created resource.
    selfLinkUnique String
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    serviceAccount InstanceTemplateServiceAccount
    Service account to attach to the instance. Structure is documented below.
    shieldedInstanceConfig InstanceTemplateShieldedInstanceConfig
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags List<String>
    Tags to attach to the instance.
    tagsFingerprint String
    The unique fingerprint of the tags.
    advancedMachineFeatures InstanceTemplateAdvancedMachineFeatures
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    canIpForward boolean
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidentialInstanceConfig InstanceTemplateConfidentialInstanceConfig
    Enable Confidential Mode on this VM. Structure is documented below
    creationTimestamp string
    Creation timestamp in RFC3339 text format.
    description string
    A brief description of this resource.
    disks InstanceTemplateDisk[]
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    enableDisplay boolean
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guestAccelerators InstanceTemplateGuestAccelerator[]
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instanceDescription string
    A brief description to use for instances created from this template.
    keyRevocationActionType string
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels {[key: string]: string}

    A set of key/value label pairs to assign to instances created from this template.

    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.

    machineType string

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    metadata {[key: string]: string}
    Metadata key/value pairs to make available from within instances created from this template.
    metadataFingerprint string
    The unique fingerprint of the metadata.
    metadataStartupScript string
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    minCpuPlatform string
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    namePrefix string

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    networkInterfaces InstanceTemplateNetworkInterface[]
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    networkPerformanceConfig InstanceTemplateNetworkPerformanceConfig
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partnerMetadata {[key: string]: string}
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region string
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservationAffinity InstanceTemplateReservationAffinity
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resourceManagerTags {[key: string]: string}
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies string
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling InstanceTemplateScheduling
    The scheduling strategy to use. More details about this configuration option are detailed below.
    selfLink string
    The URI of the created resource.
    selfLinkUnique string
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    serviceAccount InstanceTemplateServiceAccount
    Service account to attach to the instance. Structure is documented below.
    shieldedInstanceConfig InstanceTemplateShieldedInstanceConfig
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags string[]
    Tags to attach to the instance.
    tagsFingerprint string
    The unique fingerprint of the tags.
    advanced_machine_features InstanceTemplateAdvancedMachineFeaturesArgs
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    can_ip_forward bool
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidential_instance_config InstanceTemplateConfidentialInstanceConfigArgs
    Enable Confidential Mode on this VM. Structure is documented below
    creation_timestamp str
    Creation timestamp in RFC3339 text format.
    description str
    A brief description of this resource.
    disks Sequence[InstanceTemplateDiskArgs]
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    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_display bool
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guest_accelerators Sequence[InstanceTemplateGuestAcceleratorArgs]
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instance_description str
    A brief description to use for instances created from this template.
    key_revocation_action_type str
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels Mapping[str, str]

    A set of key/value label pairs to assign to instances created from this template.

    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.

    machine_type str

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    metadata Mapping[str, str]
    Metadata key/value pairs to make available from within instances created from this template.
    metadata_fingerprint str
    The unique fingerprint of the metadata.
    metadata_startup_script str
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    min_cpu_platform str
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name str
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    name_prefix str

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    network_interfaces Sequence[InstanceTemplateNetworkInterfaceArgs]
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    network_performance_config InstanceTemplateNetworkPerformanceConfigArgs
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partner_metadata Mapping[str, str]
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    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.
    region str
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservation_affinity InstanceTemplateReservationAffinityArgs
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resource_manager_tags Mapping[str, str]
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resource_policies str
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling InstanceTemplateSchedulingArgs
    The scheduling strategy to use. More details about this configuration option are detailed below.
    self_link str
    The URI of the created resource.
    self_link_unique str
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    service_account InstanceTemplateServiceAccountArgs
    Service account to attach to the instance. Structure is documented below.
    shielded_instance_config InstanceTemplateShieldedInstanceConfigArgs
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags Sequence[str]
    Tags to attach to the instance.
    tags_fingerprint str
    The unique fingerprint of the tags.
    advancedMachineFeatures Property Map
    Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
    canIpForward Boolean
    Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.
    confidentialInstanceConfig Property Map
    Enable Confidential Mode on this VM. Structure is documented below
    creationTimestamp String
    Creation timestamp in RFC3339 text format.
    description String
    A brief description of this resource.
    disks List<Property Map>
    Disks to attach to instances created from this template. This can be specified multiple times for multiple disks. Structure is documented below.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    enableDisplay Boolean
    Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.
    guestAccelerators List<Property Map>
    List of the type and count of accelerator cards attached to the instance. Structure documented below.
    instanceDescription String
    A brief description to use for instances created from this template.
    keyRevocationActionType String
    Action to be taken when a customer's encryption key is revoked. Supports STOP and NONE, with NONE being the default.
    labels Map<String>

    A set of key/value label pairs to assign to instances created from this template.

    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.

    machineType String

    The machine type to create.

    To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.


    metadata Map<String>
    Metadata key/value pairs to make available from within instances created from this template.
    metadataFingerprint String
    The unique fingerprint of the metadata.
    metadataStartupScript String
    An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.
    minCpuPlatform String
    Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake. See the complete list here.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    namePrefix String

    Creates a unique name beginning with the specified prefix. Conflicts with name. Max length is 54 characters. Prefixes with lengths longer than 37 characters will use a shortened UUID that will be more prone to collisions.

    Resulting name for a name_prefix <= 37 characters: name_prefix + YYYYmmddHHSSssss + 8 digit incremental counter Resulting name for a name_prefix 38 - 54 characters: name_prefix + YYmmdd + 3 digit incremental counter

    networkInterfaces List<Property Map>
    Networks to attach to instances created from this template. This can be specified multiple times for multiple networks. Structure is documented below.
    networkPerformanceConfig Property Map
    (Optional, Configures network performance settings for the instance created from the template. Structure is documented below. Note: machine_type must be a supported type, the image used must include the GVNIC in guest-os-features, and network_interface.0.nic-type must be GVNIC in order for this setting to take effect.
    partnerMetadata Map<String>
    Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region String
    An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.
    reservationAffinity Property Map
    Specifies the reservations that this instance can consume from. Structure is documented below.
    resourceManagerTags Map<String>
    A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies String
    • A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
    scheduling Property Map
    The scheduling strategy to use. More details about this configuration option are detailed below.
    selfLink String
    The URI of the created resource.
    selfLinkUnique String
    A special URI of the created resource that uniquely identifies this instance template with the following format: projects/{{project}}/global/instanceTemplates/{{name}}?uniqueId={{uniqueId}} Referencing an instance template via this attribute prevents Time of Check to Time of Use attacks when the instance template resides in a shared/untrusted environment.
    serviceAccount Property Map
    Service account to attach to the instance. Structure is documented below.
    shieldedInstanceConfig Property Map
    Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below. Note: shielded_instance_config can only be used with boot images with shielded vm support. See the complete list here.
    tags List<String>
    Tags to attach to the instance.
    tagsFingerprint String
    The unique fingerprint of the tags.

    Supporting Types

    InstanceTemplateAdvancedMachineFeatures, InstanceTemplateAdvancedMachineFeaturesArgs

    EnableNestedVirtualization bool
    Defines whether the instance should have nested virtualization enabled. Defaults to false.
    ThreadsPerCore int
    The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1.
    TurboMode string
    Turbo frequency mode to use for the instance. Supported modes are currently either ALL_CORE_MAX or unset (default).
    VisibleCoreCount int
    The number of physical cores to expose to an instance. visible cores info (VC).
    EnableNestedVirtualization bool
    Defines whether the instance should have nested virtualization enabled. Defaults to false.
    ThreadsPerCore int
    The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1.
    TurboMode string
    Turbo frequency mode to use for the instance. Supported modes are currently either ALL_CORE_MAX or unset (default).
    VisibleCoreCount int
    The number of physical cores to expose to an instance. visible cores info (VC).
    enableNestedVirtualization Boolean
    Defines whether the instance should have nested virtualization enabled. Defaults to false.
    threadsPerCore Integer
    The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1.
    turboMode String
    Turbo frequency mode to use for the instance. Supported modes are currently either ALL_CORE_MAX or unset (default).
    visibleCoreCount Integer
    The number of physical cores to expose to an instance. visible cores info (VC).
    enableNestedVirtualization boolean
    Defines whether the instance should have nested virtualization enabled. Defaults to false.
    threadsPerCore number
    The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1.
    turboMode string
    Turbo frequency mode to use for the instance. Supported modes are currently either ALL_CORE_MAX or unset (default).
    visibleCoreCount number
    The number of physical cores to expose to an instance. visible cores info (VC).
    enable_nested_virtualization bool
    Defines whether the instance should have nested virtualization enabled. Defaults to false.
    threads_per_core int
    The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1.
    turbo_mode str
    Turbo frequency mode to use for the instance. Supported modes are currently either ALL_CORE_MAX or unset (default).
    visible_core_count int
    The number of physical cores to expose to an instance. visible cores info (VC).
    enableNestedVirtualization Boolean
    Defines whether the instance should have nested virtualization enabled. Defaults to false.
    threadsPerCore Number
    The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1.
    turboMode String
    Turbo frequency mode to use for the instance. Supported modes are currently either ALL_CORE_MAX or unset (default).
    visibleCoreCount Number
    The number of physical cores to expose to an instance. visible cores info (VC).

    InstanceTemplateConfidentialInstanceConfig, InstanceTemplateConfidentialInstanceConfigArgs

    ConfidentialInstanceType string
    Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: SEV, SEV_SNP, TDX. on_host_maintenance can be set to MIGRATE if confidential_instance_type is set to SEV and min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM. If SEV_SNP, currently min_cpu_platform has to be set to "AMD Milan" or this will fail to create the VM.
    EnableConfidentialCompute bool
    Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, on_host_maintenance can be set to MIGRATE if min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM.
    ConfidentialInstanceType string
    Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: SEV, SEV_SNP, TDX. on_host_maintenance can be set to MIGRATE if confidential_instance_type is set to SEV and min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM. If SEV_SNP, currently min_cpu_platform has to be set to "AMD Milan" or this will fail to create the VM.
    EnableConfidentialCompute bool
    Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, on_host_maintenance can be set to MIGRATE if min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM.
    confidentialInstanceType String
    Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: SEV, SEV_SNP, TDX. on_host_maintenance can be set to MIGRATE if confidential_instance_type is set to SEV and min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM. If SEV_SNP, currently min_cpu_platform has to be set to "AMD Milan" or this will fail to create the VM.
    enableConfidentialCompute Boolean
    Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, on_host_maintenance can be set to MIGRATE if min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM.
    confidentialInstanceType string
    Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: SEV, SEV_SNP, TDX. on_host_maintenance can be set to MIGRATE if confidential_instance_type is set to SEV and min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM. If SEV_SNP, currently min_cpu_platform has to be set to "AMD Milan" or this will fail to create the VM.
    enableConfidentialCompute boolean
    Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, on_host_maintenance can be set to MIGRATE if min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM.
    confidential_instance_type str
    Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: SEV, SEV_SNP, TDX. on_host_maintenance can be set to MIGRATE if confidential_instance_type is set to SEV and min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM. If SEV_SNP, currently min_cpu_platform has to be set to "AMD Milan" or this will fail to create the VM.
    enable_confidential_compute bool
    Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, on_host_maintenance can be set to MIGRATE if min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM.
    confidentialInstanceType String
    Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: SEV, SEV_SNP, TDX. on_host_maintenance can be set to MIGRATE if confidential_instance_type is set to SEV and min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM. If SEV_SNP, currently min_cpu_platform has to be set to "AMD Milan" or this will fail to create the VM.
    enableConfidentialCompute Boolean
    Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, on_host_maintenance can be set to MIGRATE if min_cpu_platform is set to "AMD Milan". Otherwise, on_host_maintenance has to be set to TERMINATE or this will fail to create the VM.

    InstanceTemplateDisk, InstanceTemplateDiskArgs

    AutoDelete bool
    Whether or not the disk should be auto-deleted. This defaults to true.
    Boot bool
    Indicates that this is a boot disk.
    DeviceName string
    A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.
    DiskEncryptionKey InstanceTemplateDiskDiskEncryptionKey

    Encrypts or decrypts a disk using a customer-supplied encryption key.

    If you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.

    If you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.

    If you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.

    Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.

    DiskName string
    Name of the disk. When not provided, this defaults to the name of the instance.
    DiskSizeGb int
    The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be exactly 375GB.
    DiskType string
    The GCE disk type. Such as "pd-ssd", "local-ssd", "pd-balanced" or "pd-standard", "hyperdisk-balanced", "hyperdisk-throughput" or "hyperdisk-extreme".
    Interface string
    Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI.
    Labels Dictionary<string, string>
    A set of ket/value label pairs to assign to disk created from this template
    Mode string
    The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.
    ProvisionedIops int
    Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.
    ProvisionedThroughput int
    Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the Hyperdisk documentation.
    ResourceManagerTags Dictionary<string, string>
    A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    ResourcePolicies string
    • A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.
    Source string

    The name (not self_link) of the disk (such as those managed by gcp.compute.Disk) to attach.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    SourceImage string

    The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    SourceImageEncryptionKey InstanceTemplateDiskSourceImageEncryptionKey

    The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.

    Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys. Structure documented below.

    SourceSnapshot string

    The source snapshot to create this disk.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    SourceSnapshotEncryptionKey InstanceTemplateDiskSourceSnapshotEncryptionKey
    The customer-supplied encryption key of the source snapshot. Structure documented below.
    Type string
    The type of GCE disk, can be either "SCRATCH" or "PERSISTENT".
    AutoDelete bool
    Whether or not the disk should be auto-deleted. This defaults to true.
    Boot bool
    Indicates that this is a boot disk.
    DeviceName string
    A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.
    DiskEncryptionKey InstanceTemplateDiskDiskEncryptionKey

    Encrypts or decrypts a disk using a customer-supplied encryption key.

    If you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.

    If you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.

    If you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.

    Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.

    DiskName string
    Name of the disk. When not provided, this defaults to the name of the instance.
    DiskSizeGb int
    The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be exactly 375GB.
    DiskType string
    The GCE disk type. Such as "pd-ssd", "local-ssd", "pd-balanced" or "pd-standard", "hyperdisk-balanced", "hyperdisk-throughput" or "hyperdisk-extreme".
    Interface string
    Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI.
    Labels map[string]string
    A set of ket/value label pairs to assign to disk created from this template
    Mode string
    The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.
    ProvisionedIops int
    Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.
    ProvisionedThroughput int
    Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the Hyperdisk documentation.
    ResourceManagerTags map[string]string
    A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    ResourcePolicies string
    • A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.
    Source string

    The name (not self_link) of the disk (such as those managed by gcp.compute.Disk) to attach.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    SourceImage string

    The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    SourceImageEncryptionKey InstanceTemplateDiskSourceImageEncryptionKey

    The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.

    Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys. Structure documented below.

    SourceSnapshot string

    The source snapshot to create this disk.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    SourceSnapshotEncryptionKey InstanceTemplateDiskSourceSnapshotEncryptionKey
    The customer-supplied encryption key of the source snapshot. Structure documented below.
    Type string
    The type of GCE disk, can be either "SCRATCH" or "PERSISTENT".
    autoDelete Boolean
    Whether or not the disk should be auto-deleted. This defaults to true.
    boot Boolean
    Indicates that this is a boot disk.
    deviceName String
    A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.
    diskEncryptionKey InstanceTemplateDiskDiskEncryptionKey

    Encrypts or decrypts a disk using a customer-supplied encryption key.

    If you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.

    If you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.

    If you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.

    Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.

    diskName String
    Name of the disk. When not provided, this defaults to the name of the instance.
    diskSizeGb Integer
    The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be exactly 375GB.
    diskType String
    The GCE disk type. Such as "pd-ssd", "local-ssd", "pd-balanced" or "pd-standard", "hyperdisk-balanced", "hyperdisk-throughput" or "hyperdisk-extreme".
    interface_ String
    Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI.
    labels Map<String,String>
    A set of ket/value label pairs to assign to disk created from this template
    mode String
    The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.
    provisionedIops Integer
    Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.
    provisionedThroughput Integer
    Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the Hyperdisk documentation.
    resourceManagerTags Map<String,String>
    A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies String
    • A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.
    source String

    The name (not self_link) of the disk (such as those managed by gcp.compute.Disk) to attach.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceImage String

    The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceImageEncryptionKey InstanceTemplateDiskSourceImageEncryptionKey

    The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.

    Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys. Structure documented below.

    sourceSnapshot String

    The source snapshot to create this disk.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceSnapshotEncryptionKey InstanceTemplateDiskSourceSnapshotEncryptionKey
    The customer-supplied encryption key of the source snapshot. Structure documented below.
    type String
    The type of GCE disk, can be either "SCRATCH" or "PERSISTENT".
    autoDelete boolean
    Whether or not the disk should be auto-deleted. This defaults to true.
    boot boolean
    Indicates that this is a boot disk.
    deviceName string
    A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.
    diskEncryptionKey InstanceTemplateDiskDiskEncryptionKey

    Encrypts or decrypts a disk using a customer-supplied encryption key.

    If you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.

    If you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.

    If you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.

    Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.

    diskName string
    Name of the disk. When not provided, this defaults to the name of the instance.
    diskSizeGb number
    The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be exactly 375GB.
    diskType string
    The GCE disk type. Such as "pd-ssd", "local-ssd", "pd-balanced" or "pd-standard", "hyperdisk-balanced", "hyperdisk-throughput" or "hyperdisk-extreme".
    interface string
    Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI.
    labels {[key: string]: string}
    A set of ket/value label pairs to assign to disk created from this template
    mode string
    The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.
    provisionedIops number
    Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.
    provisionedThroughput number
    Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the Hyperdisk documentation.
    resourceManagerTags {[key: string]: string}
    A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies string
    • A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.
    source string

    The name (not self_link) of the disk (such as those managed by gcp.compute.Disk) to attach.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceImage string

    The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceImageEncryptionKey InstanceTemplateDiskSourceImageEncryptionKey

    The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.

    Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys. Structure documented below.

    sourceSnapshot string

    The source snapshot to create this disk.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceSnapshotEncryptionKey InstanceTemplateDiskSourceSnapshotEncryptionKey
    The customer-supplied encryption key of the source snapshot. Structure documented below.
    type string
    The type of GCE disk, can be either "SCRATCH" or "PERSISTENT".
    auto_delete bool
    Whether or not the disk should be auto-deleted. This defaults to true.
    boot bool
    Indicates that this is a boot disk.
    device_name str
    A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.
    disk_encryption_key InstanceTemplateDiskDiskEncryptionKey

    Encrypts or decrypts a disk using a customer-supplied encryption key.

    If you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.

    If you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.

    If you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.

    Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.

    disk_name str
    Name of the disk. When not provided, this defaults to the name of the instance.
    disk_size_gb int
    The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be exactly 375GB.
    disk_type str
    The GCE disk type. Such as "pd-ssd", "local-ssd", "pd-balanced" or "pd-standard", "hyperdisk-balanced", "hyperdisk-throughput" or "hyperdisk-extreme".
    interface str
    Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI.
    labels Mapping[str, str]
    A set of ket/value label pairs to assign to disk created from this template
    mode str
    The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.
    provisioned_iops int
    Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.
    provisioned_throughput int
    Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the Hyperdisk documentation.
    resource_manager_tags Mapping[str, str]
    A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resource_policies str
    • A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.
    source str

    The name (not self_link) of the disk (such as those managed by gcp.compute.Disk) to attach.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    source_image str

    The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    source_image_encryption_key InstanceTemplateDiskSourceImageEncryptionKey

    The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.

    Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys. Structure documented below.

    source_snapshot str

    The source snapshot to create this disk.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    source_snapshot_encryption_key InstanceTemplateDiskSourceSnapshotEncryptionKey
    The customer-supplied encryption key of the source snapshot. Structure documented below.
    type str
    The type of GCE disk, can be either "SCRATCH" or "PERSISTENT".
    autoDelete Boolean
    Whether or not the disk should be auto-deleted. This defaults to true.
    boot Boolean
    Indicates that this is a boot disk.
    deviceName String
    A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.
    diskEncryptionKey Property Map

    Encrypts or decrypts a disk using a customer-supplied encryption key.

    If you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.

    If you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.

    If you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.

    Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.

    diskName String
    Name of the disk. When not provided, this defaults to the name of the instance.
    diskSizeGb Number
    The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be exactly 375GB.
    diskType String
    The GCE disk type. Such as "pd-ssd", "local-ssd", "pd-balanced" or "pd-standard", "hyperdisk-balanced", "hyperdisk-throughput" or "hyperdisk-extreme".
    interface String
    Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI.
    labels Map<String>
    A set of ket/value label pairs to assign to disk created from this template
    mode String
    The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.
    provisionedIops Number
    Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.
    provisionedThroughput Number
    Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the Hyperdisk documentation.
    resourceManagerTags Map<String>
    A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
    resourcePolicies String
    • A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.
    source String

    The name (not self_link) of the disk (such as those managed by gcp.compute.Disk) to attach.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceImage String

    The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceImageEncryptionKey Property Map

    The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.

    Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys. Structure documented below.

    sourceSnapshot String

    The source snapshot to create this disk.

    Note: Either source, source_image, or source_snapshot is required in a disk block unless the disk type is local-ssd. Check the API docs for details.

    sourceSnapshotEncryptionKey Property Map
    The customer-supplied encryption key of the source snapshot. Structure documented below.
    type String
    The type of GCE disk, can be either "SCRATCH" or "PERSISTENT".

    InstanceTemplateDiskDiskEncryptionKey, InstanceTemplateDiskDiskEncryptionKeyArgs

    KmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS
    KmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS
    kmsKeySelfLink String
    The self link of the encryption key that is stored in Google Cloud KMS
    kmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS
    kms_key_self_link str
    The self link of the encryption key that is stored in Google Cloud KMS
    kmsKeySelfLink String
    The self link of the encryption key that is stored in Google Cloud KMS

    InstanceTemplateDiskSourceImageEncryptionKey, InstanceTemplateDiskSourceImageEncryptionKeyArgs

    KmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS.
    KmsKeyServiceAccount string
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    KmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS.
    KmsKeyServiceAccount string
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kmsKeySelfLink String
    The self link of the encryption key that is stored in Google Cloud KMS.
    kmsKeyServiceAccount String
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS.
    kmsKeyServiceAccount string
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kms_key_self_link str
    The self link of the encryption key that is stored in Google Cloud KMS.
    kms_key_service_account str
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kmsKeySelfLink String
    The self link of the encryption key that is stored in Google Cloud KMS.
    kmsKeyServiceAccount String
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.

    InstanceTemplateDiskSourceSnapshotEncryptionKey, InstanceTemplateDiskSourceSnapshotEncryptionKeyArgs

    KmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS.
    KmsKeyServiceAccount string
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    KmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS.
    KmsKeyServiceAccount string
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kmsKeySelfLink String
    The self link of the encryption key that is stored in Google Cloud KMS.
    kmsKeyServiceAccount String
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kmsKeySelfLink string
    The self link of the encryption key that is stored in Google Cloud KMS.
    kmsKeyServiceAccount string
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kms_key_self_link str
    The self link of the encryption key that is stored in Google Cloud KMS.
    kms_key_service_account str
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.
    kmsKeySelfLink String
    The self link of the encryption key that is stored in Google Cloud KMS.
    kmsKeyServiceAccount String
    The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.

    InstanceTemplateGuestAccelerator, InstanceTemplateGuestAcceleratorArgs

    Count int
    The number of the guest accelerator cards exposed to this instance.
    Type string
    The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80.
    Count int
    The number of the guest accelerator cards exposed to this instance.
    Type string
    The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80.
    count Integer
    The number of the guest accelerator cards exposed to this instance.
    type String
    The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80.
    count number
    The number of the guest accelerator cards exposed to this instance.
    type string
    The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80.
    count int
    The number of the guest accelerator cards exposed to this instance.
    type str
    The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80.
    count Number
    The number of the guest accelerator cards exposed to this instance.
    type String
    The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80.

    InstanceTemplateNetworkInterface, InstanceTemplateNetworkInterfaceArgs

    AccessConfigs List<InstanceTemplateNetworkInterfaceAccessConfig>
    Access configurations, i.e. IPs via which this instance can be accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet (this means that ssh provisioners will not work unless you can send traffic to the instance's network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be specified once per network_interface. Structure documented below.
    AliasIpRanges List<InstanceTemplateNetworkInterfaceAliasIpRange>
    An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks. Structure documented below.
    InternalIpv6PrefixLength int
    The prefix length of the primary internal IPv6 range.
    Ipv6AccessConfigs List<InstanceTemplateNetworkInterfaceIpv6AccessConfig>
    An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access. Structure documented below.
    Ipv6AccessType string
    One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
    Ipv6Address string
    An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    Network string
    The name or self_link of the network to attach this interface to. Use network attribute for Legacy or Auto subnetted networks and subnetwork for custom subnetted networks.
    NetworkAttachment string
    The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
    NetworkIp string
    The private IP address to assign to the instance. If empty, the address will be automatically assigned.
    NicType string
    The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET.
    QueueCount int
    The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
    StackType string
    The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
    Subnetwork string
    the name of the subnetwork to attach this interface to. The subnetwork must exist in the same region this instance will be created in. Either network or subnetwork must be provided.
    SubnetworkProject string
    The ID of the project in which the subnetwork belongs. If it is not provided, the provider project is used.
    AccessConfigs []InstanceTemplateNetworkInterfaceAccessConfig
    Access configurations, i.e. IPs via which this instance can be accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet (this means that ssh provisioners will not work unless you can send traffic to the instance's network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be specified once per network_interface. Structure documented below.
    AliasIpRanges []InstanceTemplateNetworkInterfaceAliasIpRange
    An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks. Structure documented below.
    InternalIpv6PrefixLength int
    The prefix length of the primary internal IPv6 range.
    Ipv6AccessConfigs []InstanceTemplateNetworkInterfaceIpv6AccessConfig
    An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access. Structure documented below.
    Ipv6AccessType string
    One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
    Ipv6Address string
    An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    Network string
    The name or self_link of the network to attach this interface to. Use network attribute for Legacy or Auto subnetted networks and subnetwork for custom subnetted networks.
    NetworkAttachment string
    The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
    NetworkIp string
    The private IP address to assign to the instance. If empty, the address will be automatically assigned.
    NicType string
    The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET.
    QueueCount int
    The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
    StackType string
    The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
    Subnetwork string
    the name of the subnetwork to attach this interface to. The subnetwork must exist in the same region this instance will be created in. Either network or subnetwork must be provided.
    SubnetworkProject string
    The ID of the project in which the subnetwork belongs. If it is not provided, the provider project is used.
    accessConfigs List<InstanceTemplateNetworkInterfaceAccessConfig>
    Access configurations, i.e. IPs via which this instance can be accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet (this means that ssh provisioners will not work unless you can send traffic to the instance's network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be specified once per network_interface. Structure documented below.
    aliasIpRanges List<InstanceTemplateNetworkInterfaceAliasIpRange>
    An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks. Structure documented below.
    internalIpv6PrefixLength Integer
    The prefix length of the primary internal IPv6 range.
    ipv6AccessConfigs List<InstanceTemplateNetworkInterfaceIpv6AccessConfig>
    An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access. Structure documented below.
    ipv6AccessType String
    One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
    ipv6Address String
    An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    network String
    The name or self_link of the network to attach this interface to. Use network attribute for Legacy or Auto subnetted networks and subnetwork for custom subnetted networks.
    networkAttachment String
    The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
    networkIp String
    The private IP address to assign to the instance. If empty, the address will be automatically assigned.
    nicType String
    The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET.
    queueCount Integer
    The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
    stackType String
    The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
    subnetwork String
    the name of the subnetwork to attach this interface to. The subnetwork must exist in the same region this instance will be created in. Either network or subnetwork must be provided.
    subnetworkProject String
    The ID of the project in which the subnetwork belongs. If it is not provided, the provider project is used.
    accessConfigs InstanceTemplateNetworkInterfaceAccessConfig[]
    Access configurations, i.e. IPs via which this instance can be accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet (this means that ssh provisioners will not work unless you can send traffic to the instance's network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be specified once per network_interface. Structure documented below.
    aliasIpRanges InstanceTemplateNetworkInterfaceAliasIpRange[]
    An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks. Structure documented below.
    internalIpv6PrefixLength number
    The prefix length of the primary internal IPv6 range.
    ipv6AccessConfigs InstanceTemplateNetworkInterfaceIpv6AccessConfig[]
    An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access. Structure documented below.
    ipv6AccessType string
    One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
    ipv6Address string
    An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
    name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    network string
    The name or self_link of the network to attach this interface to. Use network attribute for Legacy or Auto subnetted networks and subnetwork for custom subnetted networks.
    networkAttachment string
    The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
    networkIp string
    The private IP address to assign to the instance. If empty, the address will be automatically assigned.
    nicType string
    The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET.
    queueCount number
    The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
    stackType string
    The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
    subnetwork string
    the name of the subnetwork to attach this interface to. The subnetwork must exist in the same region this instance will be created in. Either network or subnetwork must be provided.
    subnetworkProject string
    The ID of the project in which the subnetwork belongs. If it is not provided, the provider project is used.
    access_configs Sequence[InstanceTemplateNetworkInterfaceAccessConfig]
    Access configurations, i.e. IPs via which this instance can be accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet (this means that ssh provisioners will not work unless you can send traffic to the instance's network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be specified once per network_interface. Structure documented below.
    alias_ip_ranges Sequence[InstanceTemplateNetworkInterfaceAliasIpRange]
    An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks. Structure documented below.
    internal_ipv6_prefix_length int
    The prefix length of the primary internal IPv6 range.
    ipv6_access_configs Sequence[InstanceTemplateNetworkInterfaceIpv6AccessConfig]
    An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access. Structure documented below.
    ipv6_access_type str
    One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
    ipv6_address str
    An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
    name str
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    network str
    The name or self_link of the network to attach this interface to. Use network attribute for Legacy or Auto subnetted networks and subnetwork for custom subnetted networks.
    network_attachment str
    The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
    network_ip str
    The private IP address to assign to the instance. If empty, the address will be automatically assigned.
    nic_type str
    The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET.
    queue_count int
    The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
    stack_type str
    The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
    subnetwork str
    the name of the subnetwork to attach this interface to. The subnetwork must exist in the same region this instance will be created in. Either network or subnetwork must be provided.
    subnetwork_project str
    The ID of the project in which the subnetwork belongs. If it is not provided, the provider project is used.
    accessConfigs List<Property Map>
    Access configurations, i.e. IPs via which this instance can be accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet (this means that ssh provisioners will not work unless you can send traffic to the instance's network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be specified once per network_interface. Structure documented below.
    aliasIpRanges List<Property Map>
    An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks. Structure documented below.
    internalIpv6PrefixLength Number
    The prefix length of the primary internal IPv6 range.
    ipv6AccessConfigs List<Property Map>
    An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access. Structure documented below.
    ipv6AccessType String
    One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
    ipv6Address String
    An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    network String
    The name or self_link of the network to attach this interface to. Use network attribute for Legacy or Auto subnetted networks and subnetwork for custom subnetted networks.
    networkAttachment String
    The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
    networkIp String
    The private IP address to assign to the instance. If empty, the address will be automatically assigned.
    nicType String
    The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET.
    queueCount Number
    The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
    stackType String
    The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
    subnetwork String
    the name of the subnetwork to attach this interface to. The subnetwork must exist in the same region this instance will be created in. Either network or subnetwork must be provided.
    subnetworkProject String
    The ID of the project in which the subnetwork belongs. If it is not provided, the provider project is used.

    InstanceTemplateNetworkInterfaceAccessConfig, InstanceTemplateNetworkInterfaceAccessConfigArgs

    NatIp string
    The IP address that will be 1:1 mapped to the instance's network ip. If not given, one will be generated.
    NetworkTier string
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.
    PublicPtrDomainName string
    The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.
    NatIp string
    The IP address that will be 1:1 mapped to the instance's network ip. If not given, one will be generated.
    NetworkTier string
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.
    PublicPtrDomainName string
    The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.
    natIp String
    The IP address that will be 1:1 mapped to the instance's network ip. If not given, one will be generated.
    networkTier String
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.
    publicPtrDomainName String
    The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.
    natIp string
    The IP address that will be 1:1 mapped to the instance's network ip. If not given, one will be generated.
    networkTier string
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.
    publicPtrDomainName string
    The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.
    nat_ip str
    The IP address that will be 1:1 mapped to the instance's network ip. If not given, one will be generated.
    network_tier str
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.
    public_ptr_domain_name str
    The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.
    natIp String
    The IP address that will be 1:1 mapped to the instance's network ip. If not given, one will be generated.
    networkTier String
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.
    publicPtrDomainName String
    The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.

    InstanceTemplateNetworkInterfaceAliasIpRange, InstanceTemplateNetworkInterfaceAliasIpRangeArgs

    IpCidrRange string
    The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /24) may be supplied, with a CIDR format resulting in an API error.
    SubnetworkRangeName string
    The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.
    IpCidrRange string
    The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /24) may be supplied, with a CIDR format resulting in an API error.
    SubnetworkRangeName string
    The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.
    ipCidrRange String
    The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /24) may be supplied, with a CIDR format resulting in an API error.
    subnetworkRangeName String
    The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.
    ipCidrRange string
    The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /24) may be supplied, with a CIDR format resulting in an API error.
    subnetworkRangeName string
    The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.
    ip_cidr_range str
    The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /24) may be supplied, with a CIDR format resulting in an API error.
    subnetwork_range_name str
    The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.
    ipCidrRange String
    The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /24) may be supplied, with a CIDR format resulting in an API error.
    subnetworkRangeName String
    The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.

    InstanceTemplateNetworkInterfaceIpv6AccessConfig, InstanceTemplateNetworkInterfaceIpv6AccessConfigArgs

    NetworkTier string
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6
    ExternalIpv6 string
    The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.
    ExternalIpv6PrefixLength string
    The prefix length of the external IPv6 range.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    PublicPtrDomainName string
    The domain name to be used when creating DNSv6 records for the external IPv6 ranges.
    NetworkTier string
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6
    ExternalIpv6 string
    The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.
    ExternalIpv6PrefixLength string
    The prefix length of the external IPv6 range.
    Name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    PublicPtrDomainName string
    The domain name to be used when creating DNSv6 records for the external IPv6 ranges.
    networkTier String
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6
    externalIpv6 String
    The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.
    externalIpv6PrefixLength String
    The prefix length of the external IPv6 range.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    publicPtrDomainName String
    The domain name to be used when creating DNSv6 records for the external IPv6 ranges.
    networkTier string
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6
    externalIpv6 string
    The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.
    externalIpv6PrefixLength string
    The prefix length of the external IPv6 range.
    name string
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    publicPtrDomainName string
    The domain name to be used when creating DNSv6 records for the external IPv6 ranges.
    network_tier str
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6
    external_ipv6 str
    The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.
    external_ipv6_prefix_length str
    The prefix length of the external IPv6 range.
    name str
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    public_ptr_domain_name str
    The domain name to be used when creating DNSv6 records for the external IPv6 ranges.
    networkTier String
    The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6
    externalIpv6 String
    The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.
    externalIpv6PrefixLength String
    The prefix length of the external IPv6 range.
    name String
    The name of the instance template. If you leave this blank, the provider will auto-generate a unique name.
    publicPtrDomainName String
    The domain name to be used when creating DNSv6 records for the external IPv6 ranges.

    InstanceTemplateNetworkPerformanceConfig, InstanceTemplateNetworkPerformanceConfigArgs

    TotalEgressBandwidthTier string
    The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT
    TotalEgressBandwidthTier string
    The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT
    totalEgressBandwidthTier String
    The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT
    totalEgressBandwidthTier string
    The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT
    total_egress_bandwidth_tier str
    The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT
    totalEgressBandwidthTier String
    The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT

    InstanceTemplateReservationAffinity, InstanceTemplateReservationAffinityArgs

    Type string
    The type of reservation from which this instance can consume resources.
    SpecificReservation InstanceTemplateReservationAffinitySpecificReservation
    Specifies the label selector for the reservation to use.. Structure is documented below.
    Type string
    The type of reservation from which this instance can consume resources.
    SpecificReservation InstanceTemplateReservationAffinitySpecificReservation
    Specifies the label selector for the reservation to use.. Structure is documented below.
    type String
    The type of reservation from which this instance can consume resources.
    specificReservation InstanceTemplateReservationAffinitySpecificReservation
    Specifies the label selector for the reservation to use.. Structure is documented below.
    type string
    The type of reservation from which this instance can consume resources.
    specificReservation InstanceTemplateReservationAffinitySpecificReservation
    Specifies the label selector for the reservation to use.. Structure is documented below.
    type str
    The type of reservation from which this instance can consume resources.
    specific_reservation InstanceTemplateReservationAffinitySpecificReservation
    Specifies the label selector for the reservation to use.. Structure is documented below.
    type String
    The type of reservation from which this instance can consume resources.
    specificReservation Property Map
    Specifies the label selector for the reservation to use.. Structure is documented below.

    InstanceTemplateReservationAffinitySpecificReservation, InstanceTemplateReservationAffinitySpecificReservationArgs

    Key string
    Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.
    Values List<string>
    Corresponds to the label values of a reservation resource.
    Key string
    Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.
    Values []string
    Corresponds to the label values of a reservation resource.
    key String
    Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.
    values List<String>
    Corresponds to the label values of a reservation resource.
    key string
    Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.
    values string[]
    Corresponds to the label values of a reservation resource.
    key str
    Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.
    values Sequence[str]
    Corresponds to the label values of a reservation resource.
    key String
    Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.
    values List<String>
    Corresponds to the label values of a reservation resource.

    InstanceTemplateScheduling, InstanceTemplateSchedulingArgs

    AutomaticRestart bool
    Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true.
    HostErrorTimeoutSeconds int
    Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
    InstanceTerminationAction string
    Describe the type of termination action for SPOT VM. Can be STOP or DELETE. Read more on here
    LocalSsdRecoveryTimeouts List<InstanceTemplateSchedulingLocalSsdRecoveryTimeout>
    Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour.
    MaintenanceInterval string
    Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC.
    MaxRunDuration InstanceTemplateSchedulingMaxRunDuration
    The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in instance_termination_action. Structure is documented below.
    MinNodeCpus int
    Minimum number of cpus for the instance.
    NodeAffinities List<InstanceTemplateSchedulingNodeAffinity>
    Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems. Read more on sole-tenant node creation here. Structure documented below.
    OnHostMaintenance string
    Defines the maintenance behavior for this instance.
    OnInstanceStopAction InstanceTemplateSchedulingOnInstanceStopAction
    Specifies the action to be performed when the instance is terminated using max_run_duration and STOP instance_termination_action. Only support true discard_local_ssd at this point. Structure is documented below.
    Preemptible bool
    Allows instance to be preempted. This defaults to false. Read more on this here.
    ProvisioningModel string
    Describe the type of preemptible VM. This field accepts the value STANDARD or SPOT. If the value is STANDARD, there will be no discount. If this is set to SPOT, preemptible should be true and automatic_restart should be false. For more info about SPOT, read here
    AutomaticRestart bool
    Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true.
    HostErrorTimeoutSeconds int
    Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
    InstanceTerminationAction string
    Describe the type of termination action for SPOT VM. Can be STOP or DELETE. Read more on here
    LocalSsdRecoveryTimeouts []InstanceTemplateSchedulingLocalSsdRecoveryTimeout
    Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour.
    MaintenanceInterval string
    Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC.
    MaxRunDuration InstanceTemplateSchedulingMaxRunDuration
    The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in instance_termination_action. Structure is documented below.
    MinNodeCpus int
    Minimum number of cpus for the instance.
    NodeAffinities []InstanceTemplateSchedulingNodeAffinity
    Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems. Read more on sole-tenant node creation here. Structure documented below.
    OnHostMaintenance string
    Defines the maintenance behavior for this instance.
    OnInstanceStopAction InstanceTemplateSchedulingOnInstanceStopAction
    Specifies the action to be performed when the instance is terminated using max_run_duration and STOP instance_termination_action. Only support true discard_local_ssd at this point. Structure is documented below.
    Preemptible bool
    Allows instance to be preempted. This defaults to false. Read more on this here.
    ProvisioningModel string
    Describe the type of preemptible VM. This field accepts the value STANDARD or SPOT. If the value is STANDARD, there will be no discount. If this is set to SPOT, preemptible should be true and automatic_restart should be false. For more info about SPOT, read here
    automaticRestart Boolean
    Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true.
    hostErrorTimeoutSeconds Integer
    Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
    instanceTerminationAction String
    Describe the type of termination action for SPOT VM. Can be STOP or DELETE. Read more on here
    localSsdRecoveryTimeouts List<InstanceTemplateSchedulingLocalSsdRecoveryTimeout>
    Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour.
    maintenanceInterval String
    Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC.
    maxRunDuration InstanceTemplateSchedulingMaxRunDuration
    The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in instance_termination_action. Structure is documented below.
    minNodeCpus Integer
    Minimum number of cpus for the instance.
    nodeAffinities List<InstanceTemplateSchedulingNodeAffinity>
    Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems. Read more on sole-tenant node creation here. Structure documented below.
    onHostMaintenance String
    Defines the maintenance behavior for this instance.
    onInstanceStopAction InstanceTemplateSchedulingOnInstanceStopAction
    Specifies the action to be performed when the instance is terminated using max_run_duration and STOP instance_termination_action. Only support true discard_local_ssd at this point. Structure is documented below.
    preemptible Boolean
    Allows instance to be preempted. This defaults to false. Read more on this here.
    provisioningModel String
    Describe the type of preemptible VM. This field accepts the value STANDARD or SPOT. If the value is STANDARD, there will be no discount. If this is set to SPOT, preemptible should be true and automatic_restart should be false. For more info about SPOT, read here
    automaticRestart boolean
    Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true.
    hostErrorTimeoutSeconds number
    Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
    instanceTerminationAction string
    Describe the type of termination action for SPOT VM. Can be STOP or DELETE. Read more on here
    localSsdRecoveryTimeouts InstanceTemplateSchedulingLocalSsdRecoveryTimeout[]
    Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour.
    maintenanceInterval string
    Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC.
    maxRunDuration InstanceTemplateSchedulingMaxRunDuration
    The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in instance_termination_action. Structure is documented below.
    minNodeCpus number
    Minimum number of cpus for the instance.
    nodeAffinities InstanceTemplateSchedulingNodeAffinity[]
    Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems. Read more on sole-tenant node creation here. Structure documented below.
    onHostMaintenance string
    Defines the maintenance behavior for this instance.
    onInstanceStopAction InstanceTemplateSchedulingOnInstanceStopAction
    Specifies the action to be performed when the instance is terminated using max_run_duration and STOP instance_termination_action. Only support true discard_local_ssd at this point. Structure is documented below.
    preemptible boolean
    Allows instance to be preempted. This defaults to false. Read more on this here.
    provisioningModel string
    Describe the type of preemptible VM. This field accepts the value STANDARD or SPOT. If the value is STANDARD, there will be no discount. If this is set to SPOT, preemptible should be true and automatic_restart should be false. For more info about SPOT, read here
    automatic_restart bool
    Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true.
    host_error_timeout_seconds int
    Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
    instance_termination_action str
    Describe the type of termination action for SPOT VM. Can be STOP or DELETE. Read more on here
    local_ssd_recovery_timeouts Sequence[InstanceTemplateSchedulingLocalSsdRecoveryTimeout]
    Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour.
    maintenance_interval str
    Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC.
    max_run_duration InstanceTemplateSchedulingMaxRunDuration
    The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in instance_termination_action. Structure is documented below.
    min_node_cpus int
    Minimum number of cpus for the instance.
    node_affinities Sequence[InstanceTemplateSchedulingNodeAffinity]
    Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems. Read more on sole-tenant node creation here. Structure documented below.
    on_host_maintenance str
    Defines the maintenance behavior for this instance.
    on_instance_stop_action InstanceTemplateSchedulingOnInstanceStopAction
    Specifies the action to be performed when the instance is terminated using max_run_duration and STOP instance_termination_action. Only support true discard_local_ssd at this point. Structure is documented below.
    preemptible bool
    Allows instance to be preempted. This defaults to false. Read more on this here.
    provisioning_model str
    Describe the type of preemptible VM. This field accepts the value STANDARD or SPOT. If the value is STANDARD, there will be no discount. If this is set to SPOT, preemptible should be true and automatic_restart should be false. For more info about SPOT, read here
    automaticRestart Boolean
    Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true.
    hostErrorTimeoutSeconds Number
    Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
    instanceTerminationAction String
    Describe the type of termination action for SPOT VM. Can be STOP or DELETE. Read more on here
    localSsdRecoveryTimeouts List<Property Map>
    Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour.
    maintenanceInterval String
    Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC.
    maxRunDuration Property Map
    The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in instance_termination_action. Structure is documented below.
    minNodeCpus Number
    Minimum number of cpus for the instance.
    nodeAffinities List<Property Map>
    Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems. Read more on sole-tenant node creation here. Structure documented below.
    onHostMaintenance String
    Defines the maintenance behavior for this instance.
    onInstanceStopAction Property Map
    Specifies the action to be performed when the instance is terminated using max_run_duration and STOP instance_termination_action. Only support true discard_local_ssd at this point. Structure is documented below.
    preemptible Boolean
    Allows instance to be preempted. This defaults to false. Read more on this here.
    provisioningModel String
    Describe the type of preemptible VM. This field accepts the value STANDARD or SPOT. If the value is STANDARD, there will be no discount. If this is set to SPOT, preemptible should be true and automatic_restart should be false. For more info about SPOT, read here

    InstanceTemplateSchedulingLocalSsdRecoveryTimeout, InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs

    Seconds int
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.
    Nanos int
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    Seconds int
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.
    Nanos int
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds Integer
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.
    nanos Integer
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds number
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.
    nanos number
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds int
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.
    nanos int
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds Number
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.
    nanos Number
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.

    InstanceTemplateSchedulingMaxRunDuration, InstanceTemplateSchedulingMaxRunDurationArgs

    Seconds int
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
    Nanos int
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    Seconds int
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
    Nanos int
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds Integer
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
    nanos Integer
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds number
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
    nanos number
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds int
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
    nanos int
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.
    seconds Number
    Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
    nanos Number
    Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.

    InstanceTemplateSchedulingNodeAffinity, InstanceTemplateSchedulingNodeAffinityArgs

    Key string
    The key for the node affinity label.
    Operator string
    The operator. Can be IN for node-affinities or NOT_IN for anti-affinities.
    Values List<string>
    Corresponds to the label values of a reservation resource.
    Key string
    The key for the node affinity label.
    Operator string
    The operator. Can be IN for node-affinities or NOT_IN for anti-affinities.
    Values []string
    Corresponds to the label values of a reservation resource.
    key String
    The key for the node affinity label.
    operator String
    The operator. Can be IN for node-affinities or NOT_IN for anti-affinities.
    values List<String>
    Corresponds to the label values of a reservation resource.
    key string
    The key for the node affinity label.
    operator string
    The operator. Can be IN for node-affinities or NOT_IN for anti-affinities.
    values string[]
    Corresponds to the label values of a reservation resource.
    key str
    The key for the node affinity label.
    operator str
    The operator. Can be IN for node-affinities or NOT_IN for anti-affinities.
    values Sequence[str]
    Corresponds to the label values of a reservation resource.
    key String
    The key for the node affinity label.
    operator String
    The operator. Can be IN for node-affinities or NOT_IN for anti-affinities.
    values List<String>
    Corresponds to the label values of a reservation resource.

    InstanceTemplateSchedulingOnInstanceStopAction, InstanceTemplateSchedulingOnInstanceStopActionArgs

    DiscardLocalSsd bool
    Whether to discard local SSDs attached to the VM while terminating using max_run_duration. Only supports true at this point.
    DiscardLocalSsd bool
    Whether to discard local SSDs attached to the VM while terminating using max_run_duration. Only supports true at this point.
    discardLocalSsd Boolean
    Whether to discard local SSDs attached to the VM while terminating using max_run_duration. Only supports true at this point.
    discardLocalSsd boolean
    Whether to discard local SSDs attached to the VM while terminating using max_run_duration. Only supports true at this point.
    discard_local_ssd bool
    Whether to discard local SSDs attached to the VM while terminating using max_run_duration. Only supports true at this point.
    discardLocalSsd Boolean
    Whether to discard local SSDs attached to the VM while terminating using max_run_duration. Only supports true at this point.

    InstanceTemplateServiceAccount, InstanceTemplateServiceAccountArgs

    Scopes List<string>

    A list of service scopes. Both OAuth2 URLs and gcloud short names are supported. To allow full access to all Cloud APIs, use the cloud-platform scope. See a complete list of scopes here.

    The service accounts documentation explains that access scopes are the legacy method of specifying permissions for your instance. To follow best practices you should create a dedicated service account with the minimum permissions the VM requires. To use a dedicated service account this field should be configured as a list containing the cloud-platform scope. See Authenticate workloads using service accounts best practices and Best practices for using service accounts.

    Email string
    The service account e-mail address. If not given, the default Google Compute Engine service account is used.
    Scopes []string

    A list of service scopes. Both OAuth2 URLs and gcloud short names are supported. To allow full access to all Cloud APIs, use the cloud-platform scope. See a complete list of scopes here.

    The service accounts documentation explains that access scopes are the legacy method of specifying permissions for your instance. To follow best practices you should create a dedicated service account with the minimum permissions the VM requires. To use a dedicated service account this field should be configured as a list containing the cloud-platform scope. See Authenticate workloads using service accounts best practices and Best practices for using service accounts.

    Email string
    The service account e-mail address. If not given, the default Google Compute Engine service account is used.
    scopes List<String>

    A list of service scopes. Both OAuth2 URLs and gcloud short names are supported. To allow full access to all Cloud APIs, use the cloud-platform scope. See a complete list of scopes here.

    The service accounts documentation explains that access scopes are the legacy method of specifying permissions for your instance. To follow best practices you should create a dedicated service account with the minimum permissions the VM requires. To use a dedicated service account this field should be configured as a list containing the cloud-platform scope. See Authenticate workloads using service accounts best practices and Best practices for using service accounts.

    email String
    The service account e-mail address. If not given, the default Google Compute Engine service account is used.
    scopes string[]

    A list of service scopes. Both OAuth2 URLs and gcloud short names are supported. To allow full access to all Cloud APIs, use the cloud-platform scope. See a complete list of scopes here.

    The service accounts documentation explains that access scopes are the legacy method of specifying permissions for your instance. To follow best practices you should create a dedicated service account with the minimum permissions the VM requires. To use a dedicated service account this field should be configured as a list containing the cloud-platform scope. See Authenticate workloads using service accounts best practices and Best practices for using service accounts.

    email string
    The service account e-mail address. If not given, the default Google Compute Engine service account is used.
    scopes Sequence[str]

    A list of service scopes. Both OAuth2 URLs and gcloud short names are supported. To allow full access to all Cloud APIs, use the cloud-platform scope. See a complete list of scopes here.

    The service accounts documentation explains that access scopes are the legacy method of specifying permissions for your instance. To follow best practices you should create a dedicated service account with the minimum permissions the VM requires. To use a dedicated service account this field should be configured as a list containing the cloud-platform scope. See Authenticate workloads using service accounts best practices and Best practices for using service accounts.

    email str
    The service account e-mail address. If not given, the default Google Compute Engine service account is used.
    scopes List<String>

    A list of service scopes. Both OAuth2 URLs and gcloud short names are supported. To allow full access to all Cloud APIs, use the cloud-platform scope. See a complete list of scopes here.

    The service accounts documentation explains that access scopes are the legacy method of specifying permissions for your instance. To follow best practices you should create a dedicated service account with the minimum permissions the VM requires. To use a dedicated service account this field should be configured as a list containing the cloud-platform scope. See Authenticate workloads using service accounts best practices and Best practices for using service accounts.

    email String
    The service account e-mail address. If not given, the default Google Compute Engine service account is used.

    InstanceTemplateShieldedInstanceConfig, InstanceTemplateShieldedInstanceConfigArgs

    EnableIntegrityMonitoring bool
    • Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.
    EnableSecureBoot bool
    • Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.
    EnableVtpm bool
    • Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.
    EnableIntegrityMonitoring bool
    • Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.
    EnableSecureBoot bool
    • Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.
    EnableVtpm bool
    • Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.
    enableIntegrityMonitoring Boolean
    • Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.
    enableSecureBoot Boolean
    • Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.
    enableVtpm Boolean
    • Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.
    enableIntegrityMonitoring boolean
    • Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.
    enableSecureBoot boolean
    • Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.
    enableVtpm boolean
    • Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.
    enable_integrity_monitoring bool
    • Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.
    enable_secure_boot bool
    • Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.
    enable_vtpm bool
    • Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.
    enableIntegrityMonitoring Boolean
    • Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.
    enableSecureBoot Boolean
    • Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.
    enableVtpm Boolean
    • Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.

    Import

    Instance templates can be imported using any of these accepted formats:

    • projects/{{project}}/global/instanceTemplates/{{name}}

    • {{project}}/{{name}}

    • {{name}}

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

    $ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default projects/{{project}}/global/instanceTemplates/{{name}}
    
    $ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{project}}/{{name}}
    
    $ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{name}}
    

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

    Package Details

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