Instance Group
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());
}
}
Content copied to clipboard
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());
}
}
Content copied to clipboard
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());
}
}
Content copied to clipboard
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
Content copied to clipboard
$ pulumi import gcp:compute/instanceGroup:InstanceGroup webservers big-project/us-central1-a/terraform-webservers
Content copied to clipboard
$ pulumi import gcp:compute/instanceGroup:InstanceGroup webservers projects/big-project/zones/us-central1-a/instanceGroups/terraform-webservers
Content copied to clipboard
Properties
Link copied to clipboard
An optional textual description of the instance group.
Link copied to clipboard
The named port configuration. See the section below for details on configuration. Structure is documented below.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard