AutoscalerArgs

data class AutoscalerArgs(val autoscalingPolicy: Output<AutoscalerAutoscalingPolicyArgs>? = null, val description: Output<String>? = null, val name: Output<String>? = null, val project: Output<String>? = null, val target: Output<String>? = null, val zone: Output<String>? = null) : ConvertibleToJava<AutoscalerArgs>

Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. To get more information about Autoscaler, see:

Example Usage

Autoscaler Single Instance

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.TargetPool;
import com.pulumi.gcp.compute.TargetPoolArgs;
import com.pulumi.gcp.compute.InstanceGroupManager;
import com.pulumi.gcp.compute.InstanceGroupManagerArgs;
import com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;
import com.pulumi.gcp.compute.Autoscaler;
import com.pulumi.gcp.compute.AutoscalerArgs;
import com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyArgs;
import com.pulumi.resources.CustomResourceOptions;
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 debian9 = ComputeFunctions.getImage(GetImageArgs.builder()
.family("debian-11")
.project("debian-cloud")
.build());
var defaultInstanceTemplate = new InstanceTemplate("defaultInstanceTemplate", InstanceTemplateArgs.builder()
.machineType("e2-medium")
.canIpForward(false)
.tags(
"foo",
"bar")
.disks(InstanceTemplateDiskArgs.builder()
.sourceImage(debian9.applyValue(getImageResult -> getImageResult.id()))
.build())
.networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()
.network("default")
.build())
.metadata(Map.of("foo", "bar"))
.serviceAccount(InstanceTemplateServiceAccountArgs.builder()
.scopes(
"userinfo-email",
"compute-ro",
"storage-ro")
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var defaultTargetPool = new TargetPool("defaultTargetPool", TargetPoolArgs.Empty, CustomResourceOptions.builder()
.provider(google_beta)
.build());
var defaultInstanceGroupManager = new InstanceGroupManager("defaultInstanceGroupManager", InstanceGroupManagerArgs.builder()
.zone("us-central1-f")
.versions(InstanceGroupManagerVersionArgs.builder()
.instanceTemplate(defaultInstanceTemplate.id())
.name("primary")
.build())
.targetPools(defaultTargetPool.id())
.baseInstanceName("autoscaler-sample")
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var defaultAutoscaler = new Autoscaler("defaultAutoscaler", AutoscalerArgs.builder()
.zone("us-central1-f")
.target(defaultInstanceGroupManager.id())
.autoscalingPolicy(AutoscalerAutoscalingPolicyArgs.builder()
.maxReplicas(5)
.minReplicas(1)
.cooldownPeriod(60)
.metrics(AutoscalerAutoscalingPolicyMetricArgs.builder()
.name("pubsub.googleapis.com/subscription/num_undelivered_messages")
.filter("resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription")
.singleInstanceAssignment(65535)
.build())
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
}
}

Autoscaler Basic

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.TargetPool;
import com.pulumi.gcp.compute.InstanceGroupManager;
import com.pulumi.gcp.compute.InstanceGroupManagerArgs;
import com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;
import com.pulumi.gcp.compute.Autoscaler;
import com.pulumi.gcp.compute.AutoscalerArgs;
import com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyArgs;
import com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyCpuUtilizationArgs;
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 debian9 = ComputeFunctions.getImage(GetImageArgs.builder()
.family("debian-11")
.project("debian-cloud")
.build());
var foobarInstanceTemplate = new InstanceTemplate("foobarInstanceTemplate", InstanceTemplateArgs.builder()
.machineType("e2-medium")
.canIpForward(false)
.tags(
"foo",
"bar")
.disks(InstanceTemplateDiskArgs.builder()
.sourceImage(debian9.applyValue(getImageResult -> getImageResult.id()))
.build())
.networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()
.network("default")
.build())
.metadata(Map.of("foo", "bar"))
.serviceAccount(InstanceTemplateServiceAccountArgs.builder()
.scopes(
"userinfo-email",
"compute-ro",
"storage-ro")
.build())
.build());
var foobarTargetPool = new TargetPool("foobarTargetPool");
var foobarInstanceGroupManager = new InstanceGroupManager("foobarInstanceGroupManager", InstanceGroupManagerArgs.builder()
.zone("us-central1-f")
.versions(InstanceGroupManagerVersionArgs.builder()
.instanceTemplate(foobarInstanceTemplate.id())
.name("primary")
.build())
.targetPools(foobarTargetPool.id())
.baseInstanceName("foobar")
.build());
var foobarAutoscaler = new Autoscaler("foobarAutoscaler", AutoscalerArgs.builder()
.zone("us-central1-f")
.target(foobarInstanceGroupManager.id())
.autoscalingPolicy(AutoscalerAutoscalingPolicyArgs.builder()
.maxReplicas(5)
.minReplicas(1)
.cooldownPeriod(60)
.cpuUtilization(AutoscalerAutoscalingPolicyCpuUtilizationArgs.builder()
.target(0.5)
.build())
.build())
.build());
}
}

Import

Autoscaler can be imported using any of these accepted formats

$ pulumi import gcp:compute/autoscaler:Autoscaler default projects/{{project}}/zones/{{zone}}/autoscalers/{{name}}
$ pulumi import gcp:compute/autoscaler:Autoscaler default {{project}}/{{zone}}/{{name}}
$ pulumi import gcp:compute/autoscaler:Autoscaler default {{zone}}/{{name}}
$ pulumi import gcp:compute/autoscaler:Autoscaler default {{name}}

Constructors

Link copied to clipboard
constructor(autoscalingPolicy: Output<AutoscalerAutoscalingPolicyArgs>? = null, description: Output<String>? = null, name: Output<String>? = null, project: Output<String>? = null, target: Output<String>? = null, zone: Output<String>? = null)

Properties

Link copied to clipboard

The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%. Structure is documented below.

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

An optional description of this resource.

Link copied to clipboard
val name: Output<String>? = null

Name of the resource. The name must be 1-63 characters long and match the regular expression a-z? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.

Link copied to clipboard
val project: Output<String>? = null

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 target: Output<String>? = null

URL of the managed instance group that this autoscaler will scale.

Link copied to clipboard
val zone: Output<String>? = null

URL of the zone where the instance group resides.

Functions

Link copied to clipboard
open override fun toJava(): AutoscalerArgs