Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.gcp.compute.kotlin
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.compute.InstanceFromTemplateArgs.builder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateAdvancedMachineFeaturesArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateAdvancedMachineFeaturesArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateAttachedDiskArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateAttachedDiskArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateBootDiskArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateBootDiskArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateConfidentialInstanceConfigArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateConfidentialInstanceConfigArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateGuestAcceleratorArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateGuestAcceleratorArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateNetworkInterfaceArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateNetworkInterfaceArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateNetworkPerformanceConfigArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateNetworkPerformanceConfigArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateParamsArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateParamsArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateReservationAffinityArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateReservationAffinityArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateSchedulingArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateSchedulingArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateScratchDiskArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateScratchDiskArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateServiceAccountArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateServiceAccountArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateShieldedInstanceConfigArgs
import com.pulumi.gcp.compute.kotlin.inputs.InstanceFromTemplateShieldedInstanceConfigArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName
/**
* Manages a VM instance resource within GCE. For more information see
* [the official documentation](https://cloud.google.com/compute/docs/instances)
* and
* [API](https://cloud.google.com/compute/docs/reference/latest/instances).
* This resource is specifically to create a compute instance from a given
* `source_instance_template`. To create an instance without a template, use the
* `gcp.compute.Instance` resource.
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* const tpl = new gcp.compute.InstanceTemplate("tpl", {
* name: "template",
* machineType: "e2-medium",
* disks: [{
* sourceImage: "debian-cloud/debian-11",
* autoDelete: true,
* diskSizeGb: 100,
* boot: true,
* }],
* networkInterfaces: [{
* network: "default",
* }],
* metadata: {
* foo: "bar",
* },
* canIpForward: true,
* });
* const tplInstanceFromTemplate = new gcp.compute.InstanceFromTemplate("tpl", {
* name: "instance-from-template",
* zone: "us-central1-a",
* sourceInstanceTemplate: tpl.selfLinkUnique,
* canIpForward: false,
* labels: {
* my_key: "my_value",
* },
* });
* ```
* ```python
* import pulumi
* import pulumi_gcp as gcp
* tpl = gcp.compute.InstanceTemplate("tpl",
* name="template",
* machine_type="e2-medium",
* disks=[gcp.compute.InstanceTemplateDiskArgs(
* source_image="debian-cloud/debian-11",
* auto_delete=True,
* disk_size_gb=100,
* boot=True,
* )],
* network_interfaces=[gcp.compute.InstanceTemplateNetworkInterfaceArgs(
* network="default",
* )],
* metadata={
* "foo": "bar",
* },
* can_ip_forward=True)
* tpl_instance_from_template = gcp.compute.InstanceFromTemplate("tpl",
* name="instance-from-template",
* zone="us-central1-a",
* source_instance_template=tpl.self_link_unique,
* can_ip_forward=False,
* labels={
* "my_key": "my_value",
* })
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Gcp = Pulumi.Gcp;
* return await Deployment.RunAsync(() =>
* {
* var tpl = new Gcp.Compute.InstanceTemplate("tpl", new()
* {
* Name = "template",
* MachineType = "e2-medium",
* Disks = new[]
* {
* new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
* {
* SourceImage = "debian-cloud/debian-11",
* AutoDelete = true,
* DiskSizeGb = 100,
* Boot = true,
* },
* },
* NetworkInterfaces = new[]
* {
* new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs
* {
* Network = "default",
* },
* },
* Metadata =
* {
* { "foo", "bar" },
* },
* CanIpForward = true,
* });
* var tplInstanceFromTemplate = new Gcp.Compute.InstanceFromTemplate("tpl", new()
* {
* Name = "instance-from-template",
* Zone = "us-central1-a",
* SourceInstanceTemplate = tpl.SelfLinkUnique,
* CanIpForward = false,
* Labels =
* {
* { "my_key", "my_value" },
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* tpl, err := compute.NewInstanceTemplate(ctx, "tpl", &compute.InstanceTemplateArgs{
* Name: pulumi.String("template"),
* MachineType: pulumi.String("e2-medium"),
* Disks: compute.InstanceTemplateDiskArray{
* &compute.InstanceTemplateDiskArgs{
* SourceImage: pulumi.String("debian-cloud/debian-11"),
* AutoDelete: pulumi.Bool(true),
* DiskSizeGb: pulumi.Int(100),
* Boot: pulumi.Bool(true),
* },
* },
* NetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{
* &compute.InstanceTemplateNetworkInterfaceArgs{
* Network: pulumi.String("default"),
* },
* },
* Metadata: pulumi.Map{
* "foo": pulumi.Any("bar"),
* },
* CanIpForward: pulumi.Bool(true),
* })
* if err != nil {
* return err
* }
* _, err = compute.NewInstanceFromTemplate(ctx, "tpl", &compute.InstanceFromTemplateArgs{
* Name: pulumi.String("instance-from-template"),
* Zone: pulumi.String("us-central1-a"),
* SourceInstanceTemplate: tpl.SelfLinkUnique,
* CanIpForward: pulumi.Bool(false),
* Labels: pulumi.StringMap{
* "my_key": pulumi.String("my_value"),
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.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.InstanceFromTemplate;
* import com.pulumi.gcp.compute.InstanceFromTemplateArgs;
* 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 tpl = new InstanceTemplate("tpl", InstanceTemplateArgs.builder()
* .name("template")
* .machineType("e2-medium")
* .disks(InstanceTemplateDiskArgs.builder()
* .sourceImage("debian-cloud/debian-11")
* .autoDelete(true)
* .diskSizeGb(100)
* .boot(true)
* .build())
* .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()
* .network("default")
* .build())
* .metadata(Map.of("foo", "bar"))
* .canIpForward(true)
* .build());
* var tplInstanceFromTemplate = new InstanceFromTemplate("tplInstanceFromTemplate", InstanceFromTemplateArgs.builder()
* .name("instance-from-template")
* .zone("us-central1-a")
* .sourceInstanceTemplate(tpl.selfLinkUnique())
* .canIpForward(false)
* .labels(Map.of("my_key", "my_value"))
* .build());
* }
* }
* ```
* ```yaml
* resources:
* tpl:
* type: gcp:compute:InstanceTemplate
* properties:
* name: template
* machineType: e2-medium
* disks:
* - sourceImage: debian-cloud/debian-11
* autoDelete: true
* diskSizeGb: 100
* boot: true
* networkInterfaces:
* - network: default
* metadata:
* foo: bar
* canIpForward: true
* tplInstanceFromTemplate:
* type: gcp:compute:InstanceFromTemplate
* name: tpl
* properties:
* name: instance-from-template
* zone: us-central1-a
* sourceInstanceTemplate: ${tpl.selfLinkUnique}
* canIpForward: false
* labels:
* my_key: my_value
* ```
*
* ## Import
* This resource does not support import.
* @property advancedMachineFeatures Controls for advanced machine-related behavior features.
* @property allowStoppingForUpdate
* @property attachedDisks List of disks attached to the instance
* @property bootDisk The boot disk for the instance.
* @property canIpForward Whether sending and receiving of packets with non-matching source or destination IPs is allowed.
* @property confidentialInstanceConfig The Confidential VM config being used by the instance. on_host_maintenance has to be set to TERMINATE or this will fail
* to create.
* @property deletionProtection Whether deletion protection is enabled on this instance.
* @property description A brief description of the resource.
* @property desiredStatus Desired status of the instance. Either "RUNNING" or "TERMINATED".
* @property enableDisplay Whether the instance has virtual displays enabled.
* @property guestAccelerators List of the type and count of accelerator cards attached to the instance.
* @property hostname A custom hostname for the instance. Must be a fully qualified DNS name and RFC-1035-valid. Valid format is a series of
* labels 1-63 characters long matching the regular expression a-z, concatenated with periods. The entire hostname must not
* exceed 253 characters. Changing this forces a new resource to be created.
* @property labels A set of key/value label pairs assigned to the instance. **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.
* @property machineType The machine type to create.
* @property metadata Metadata key/value pairs made available within the instance.
* @property metadataStartupScript Metadata startup scripts made available within the instance.
* @property minCpuPlatform The minimum CPU platform specified for the VM instance.
* @property name A unique name for the resource, required by GCE.
* Changing this forces a new resource to be created.
* @property networkInterfaces The networks attached to the instance.
* @property networkPerformanceConfig Configures network performance settings for the instance. If not specified, the instance will be created with its
* default network performance configuration.
* @property params Stores additional params passed with the request, but not persisted as part of resource payload.
* @property project The ID of the project in which the resource belongs. If self_link is provided, this value is ignored. If neither
* self_link nor project are provided, the provider project is used.
* @property reservationAffinity Specifies the reservations that this instance can consume from.
* @property resourcePolicies A list of self_links of resource policies to attach to the instance. Currently a max of 1 resource policy is supported.
* @property scheduling The scheduling strategy being used by the instance.
* @property scratchDisks The scratch disks attached to the instance.
* @property serviceAccount The service account to attach to the instance.
* @property shieldedInstanceConfig The shielded vm config being used by the instance.
* @property sourceInstanceTemplate Name or self link of an instance
* template to create the instance based on. It is recommended to reference
* instance templates through their unique id (`self_link_unique` attribute).
* - - -
* @property tags The list of tags attached to the instance.
* @property zone The zone that the machine should be created in. If not
* set, the provider zone is used.
* In addition to these, all arguments from `gcp.compute.Instance` are supported
* as a way to override the properties in the template. All exported attributes
* from `gcp.compute.Instance` are likewise exported here.
*/
public data class InstanceFromTemplateArgs(
public val advancedMachineFeatures: Output? =
null,
public val allowStoppingForUpdate: Output? = null,
public val attachedDisks: Output>? = null,
public val bootDisk: Output? = null,
public val canIpForward: Output? = null,
public val confidentialInstanceConfig: Output? =
null,
public val deletionProtection: Output? = null,
public val description: Output? = null,
public val desiredStatus: Output? = null,
public val enableDisplay: Output? = null,
public val guestAccelerators: Output>? = null,
public val hostname: Output? = null,
public val labels: Output