Per Instance Config Args
A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name across instance group manager operations and can define stateful disks or metadata that are unique to the instance. To get more information about PerInstanceConfig, see:
How-to Guides
Example Usage
Stateful Igm
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 com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;
import com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;
import com.pulumi.gcp.compute.InstanceGroupManager;
import com.pulumi.gcp.compute.InstanceGroupManagerArgs;
import com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;
import com.pulumi.gcp.compute.Disk;
import com.pulumi.gcp.compute.DiskArgs;
import com.pulumi.gcp.compute.PerInstanceConfig;
import com.pulumi.gcp.compute.PerInstanceConfigArgs;
import com.pulumi.gcp.compute.inputs.PerInstanceConfigPreservedStateArgs;
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 igm_basic = new InstanceTemplate("igm-basic", InstanceTemplateArgs.builder()
.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())
.serviceAccount(InstanceTemplateServiceAccountArgs.builder()
.scopes(
"userinfo-email",
"compute-ro",
"storage-ro")
.build())
.build());
var igm_no_tp = new InstanceGroupManager("igm-no-tp", InstanceGroupManagerArgs.builder()
.description("Test instance group manager")
.versions(InstanceGroupManagerVersionArgs.builder()
.name("prod")
.instanceTemplate(igm_basic.selfLink())
.build())
.baseInstanceName("igm-no-tp")
.zone("us-central1-c")
.targetSize(2)
.build());
var default_ = new Disk("default", DiskArgs.builder()
.type("pd-ssd")
.zone(google_compute_instance_group_manager.igm().zone())
.image("debian-11-bullseye-v20220719")
.physicalBlockSizeBytes(4096)
.build());
var withDisk = new PerInstanceConfig("withDisk", PerInstanceConfigArgs.builder()
.zone(google_compute_instance_group_manager.igm().zone())
.instanceGroupManager(google_compute_instance_group_manager.igm().name())
.preservedState(PerInstanceConfigPreservedStateArgs.builder()
.metadata(Map.ofEntries(
Map.entry("foo", "bar"),
Map.entry("instance_template", igm_basic.selfLink())
))
.disks(PerInstanceConfigPreservedStateDiskArgs.builder()
.deviceName("my-stateful-disk")
.source(default_.id())
.mode("READ_ONLY")
.build())
.build())
.build());
}
}
Import
PerInstanceConfig can be imported using any of these accepted formats
$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}
$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}
$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{zone}}/{{instance_group_manager}}/{{name}}
$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{instance_group_manager}}/{{name}}
Constructors
Properties
The instance group manager this instance config is part of.
The minimal action to perform on the instance during an update. Default is NONE
. Possible values are:
The most disruptive action to perform on the instance during an update. Default is REPLACE
. Possible values are:
The preserved state for this instance. Structure is documented below.
When true, deleting this config will immediately remove any specified state from the underlying instance. When false, deleting this config will not immediately remove any state from the underlying instance. State will be removed on the next instance recreation or update.