github.com/atsaki/terraform@v0.4.3-0.20150919165407-25bba5967654/website/source/docs/providers/google/r/compute_autoscaler.html.markdown (about)

     1  ---
     2  layout: "google"
     3  page_title: "Google: google_compute_autoscaler"
     4  sidebar_current: "docs-google-resource-compute-autoscaler"
     5  description: |-
     6    Manages an Autoscaler within GCE.
     7  ---
     8  
     9  # google\_compute\_autoscaler
    10  
    11  A Compute Engine Autoscaler automatically adds or removes virtual machines from
    12  a managed instance group based on increases or decreases in load. This allows
    13  your applications to gracefully handle increases in traffic and reduces cost
    14  when the need for resources is lower. You just define the autoscaling policy and
    15  the autoscaler performs automatic scaling based on the measured load.  For more
    16  information, see [the official
    17  documentation](https://cloud.google.com/compute/docs/autoscaler/) and
    18  [API](https://cloud.google.com/compute/docs/autoscaler/v1beta2/autoscalers)
    19  
    20  
    21  ## Example Usage
    22  
    23  ```
    24  resource "google_compute_instance_template" "foobar" {
    25      name = "foobar"
    26      machine_type = "n1-standard-1"
    27      can_ip_forward = false
    28      tags = ["foo", "bar"]
    29  
    30      disk {
    31          source_image = "debian-cloud/debian-7-wheezy-v20140814"
    32      }
    33  
    34      network_interface {
    35          network = "default"
    36      }
    37  
    38      metadata {
    39          foo = "bar"
    40      }
    41  
    42      service_account {
    43          scopes = ["userinfo-email", "compute-ro", "storage-ro"]
    44      }
    45  }
    46  
    47  resource "google_compute_target_pool" "foobar" {
    48      name = "foobar"
    49  }
    50  
    51  resource "google_compute_instance_group_manager" "foobar" {
    52      name = "foobar"
    53      instance_template = "${google_compute_instance_template.foobar.self_link}"
    54      target_pools = ["${google_compute_target_pool.foobar.self_link}"]
    55      base_instance_name = "foobar"
    56      zone = "us-central1-f"
    57  }
    58  
    59  resource "google_compute_autoscaler" "foobar" {
    60      name = "foobar"
    61      zone = "us-central1-f"
    62      target = "${google_compute_instance_group_manager.foobar.self_link}"
    63      autoscaling_policy = {
    64          max_replicas = 5
    65          min_replicas = 1
    66          cooldown_period = 60
    67          cpu_utilization = {
    68              target = 0.5
    69          }
    70      }
    71  }
    72  ```
    73  
    74  ## Argument Reference
    75  
    76  The following arguments are supported:
    77  
    78  * `description` - (Optional) An optional textual description of the instance
    79  group manager.
    80  
    81  * `target` - (Required) The full URL to the instance group manager whose size we
    82    control.
    83  
    84  * `autoscaling_policy.` - (Required) The parameters of the autoscaling
    85    algorithm.  Structure is documented below.
    86  
    87  * `zone` - (Required) The zone of the target.
    88  
    89  The `autoscaling_policy` block contains:
    90  
    91  * `max_replicas` - (Required) The group will never be larger than this.
    92  
    93  * `min_replicas` - (Required) The group will never be smaller than this.
    94  
    95  * `cooldown_period` - (Optional) Period to wait between changes.  This should be
    96    at least double the time your instances take to start up.
    97  
    98  * `cpu_utilization` - (Optional) A policy that scales when the cluster's average
    99    CPU is above or below a given threshold.  Structure is documented below.
   100  
   101  * `metric` - (Optional) A policy that scales according to Google Cloud
   102    Monitoring metrics  Structure is documented below.
   103  
   104  * `load_balancing_utilization` - (Optional) A policy that scales when the load
   105    reaches a proportion of a limit defined in the HTTP load balancer.  Structure
   106  is documented below.
   107  
   108  The `cpu_utilization` block contains:
   109  
   110  * `target` - The floating point threshold where CPU utilization should be.  E.g.
   111    for 50% one would specify 0.5.
   112  
   113  The `metric` block contains (more documentation
   114  [here](https://cloud.google.com/monitoring/api/metrics)):
   115  
   116  * `name` - The name of the Google Cloud Monitoring metric to follow, e.g.
   117    compute.googleapis.com/instance/network/received_bytes_count
   118  
   119  * `type` - Either "cumulative", "delta", or "gauge".
   120  
   121  * `target` - The desired metric value per instance.  Must be a positive value.
   122  
   123  The `load_balancing_utilization` block contains:
   124  
   125  * `target` - The floating point threshold where load balancing utilization
   126    should be.  E.g. if the load balancer's `maxRatePerInstance` is 10 requests
   127    per second (RPS) then setting this to 0.5 would cause the group to be scaled
   128    such that each instance receives 5 RPS.
   129  
   130  
   131  ## Attributes Reference
   132  
   133  The following attributes are exported:
   134  
   135  * `self_link` - The URL of the created resource.