InstanceGroup

class InstanceGroup : KotlinCustomResource

Creates a group of dissimilar Compute Engine virtual machine instances. For more information, see the official documentation and API

Example Usage

Empty Instance Group

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.InstanceGroup;
import com.pulumi.gcp.compute.InstanceGroupArgs;
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 test = new InstanceGroup("test", InstanceGroupArgs.builder()
.description("Test instance group")
.zone("us-central1-a")
.network(google_compute_network.default().id())
.build());
}
}

Example Usage - With instances and named ports

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.InstanceGroup;
import com.pulumi.gcp.compute.InstanceGroupArgs;
import com.pulumi.gcp.compute.inputs.InstanceGroupNamedPortArgs;
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 webservers = new InstanceGroup("webservers", InstanceGroupArgs.builder()
.description("Test instance group")
.instances(
google_compute_instance.test().id(),
google_compute_instance.test2().id())
.namedPorts(
InstanceGroupNamedPortArgs.builder()
.name("http")
.port("8080")
.build(),
InstanceGroupNamedPortArgs.builder()
.name("https")
.port("8443")
.build())
.zone("us-central1-a")
.build());
}
}

Example Usage - Recreating an instance group in use

Recreating an instance group that's in use by another resource will give a resourceInUseByAnotherResource error. Use lifecycle.create_before_destroy as shown in this example to avoid this type of error.

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.Instance;
import com.pulumi.gcp.compute.InstanceArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;
import com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;
import com.pulumi.gcp.compute.InstanceGroup;
import com.pulumi.gcp.compute.InstanceGroupArgs;
import com.pulumi.gcp.compute.inputs.InstanceGroupNamedPortArgs;
import com.pulumi.gcp.compute.HttpsHealthCheck;
import com.pulumi.gcp.compute.HttpsHealthCheckArgs;
import com.pulumi.gcp.compute.BackendService;
import com.pulumi.gcp.compute.BackendServiceArgs;
import com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;
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 debianImage = ComputeFunctions.getImage(GetImageArgs.builder()
.family("debian-11")
.project("debian-cloud")
.build());
var stagingVm = new Instance("stagingVm", InstanceArgs.builder()
.machineType("e2-medium")
.zone("us-central1-c")
.bootDisk(InstanceBootDiskArgs.builder()
.initializeParams(InstanceBootDiskInitializeParamsArgs.builder()
.image(debianImage.applyValue(getImageResult -> getImageResult.selfLink()))
.build())
.build())
.networkInterfaces(InstanceNetworkInterfaceArgs.builder()
.network("default")
.build())
.build());
var stagingGroup = new InstanceGroup("stagingGroup", InstanceGroupArgs.builder()
.zone("us-central1-c")
.instances(stagingVm.id())
.namedPorts(
InstanceGroupNamedPortArgs.builder()
.name("http")
.port("8080")
.build(),
InstanceGroupNamedPortArgs.builder()
.name("https")
.port("8443")
.build())
.build());
var stagingHealth = new HttpsHealthCheck("stagingHealth", HttpsHealthCheckArgs.builder()
.requestPath("/health_check")
.build());
var stagingService = new BackendService("stagingService", BackendServiceArgs.builder()
.portName("https")
.protocol("HTTPS")
.backends(BackendServiceBackendArgs.builder()
.group(stagingGroup.id())
.build())
.healthChecks(stagingHealth.id())
.build());
}
}

Import

Instance group can be imported using the zone and name with an optional project, e.g.

$ pulumi import gcp:compute/instanceGroup:InstanceGroup webservers us-central1-a/terraform-webservers
$ pulumi import gcp:compute/instanceGroup:InstanceGroup webservers big-project/us-central1-a/terraform-webservers
$ pulumi import gcp:compute/instanceGroup:InstanceGroup webservers projects/big-project/zones/us-central1-a/instanceGroups/terraform-webservers

Properties

Link copied to clipboard
val description: Output<String>?

An optional textual description of the instance group.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val instances: Output<List<String>>

The list of instances in the group, in self_link format. When adding instances they must all be in the same network and zone as the instance group.

Link copied to clipboard
val name: Output<String>

The name of the instance group. Must be 1-63 characters long and comply with RFC1035. Supported characters include lowercase letters, numbers, and hyphens.

Link copied to clipboard

The named port configuration. See the section below for details on configuration. Structure is documented below.

Link copied to clipboard
val network: Output<String>

The URL of the network the instance group is in. If this is different from the network where the instances are in, the creation fails. Defaults to the network where the instances are in (if neither network nor instances is specified, this field will be blank).

Link copied to clipboard
val project: Output<String>

The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val selfLink: Output<String>

The URI of the created resource.

Link copied to clipboard
val size: Output<Int>

The number of instances in the group.

Link copied to clipboard
val urn: Output<String>
Link copied to clipboard
val zone: Output<String>

The zone that this instance group should be created in.