2015-02-16 16:07:26 +00:00
---
layout: "google"
2015-07-28 00:47:10 +00:00
page_title: "Google: google_compute_instance_group_manager"
2015-10-23 14:10:41 +00:00
sidebar_current: "docs-google-compute-instance-group-manager"
2015-02-16 16:07:26 +00:00
description: |-
2015-05-17 00:14:38 +00:00
Manages an Instance Group within GCE.
2015-02-16 16:07:26 +00:00
---
2015-07-28 00:47:10 +00:00
# google\_compute\_instance\_group\_manager
2015-05-17 00:14:38 +00:00
2015-02-16 16:07:26 +00:00
The Google Compute Engine Instance Group Manager API creates and manages pools
of homogeneous Compute Engine virtual machine instances from a common instance
2016-04-10 21:34:15 +00:00
template. For more information, see [the official documentation ](https://cloud.google.com/compute/docs/instance-groups/manager )
2017-09-12 16:34:58 +00:00
and [API ](https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers )
2017-10-02 17:19:22 +00:00
~> **Note:** Use [google_compute_region_instance_group_manager ](/docs/providers/google/r/compute_region_instance_group_manager.html ) to create a regional (multi-zone) instance group manager.
2015-02-16 16:07:26 +00:00
2018-10-31 18:02:24 +00:00
## Example Usage with top level instance template (`google` provider)
2015-02-16 16:07:26 +00:00
2017-04-17 10:17:54 +00:00
```hcl
2017-10-21 08:50:32 +00:00
resource "google_compute_health_check" "autohealing" {
name = "autohealing-health-check"
check_interval_sec = 5
timeout_sec = 5
healthy_threshold = 2
unhealthy_threshold = 10 # 50 seconds
http_health_check {
request_path = "/healthz"
port = "8080"
}
}
2017-06-16 17:53:36 +00:00
resource "google_compute_instance_group_manager" "appserver" {
2017-10-21 08:50:32 +00:00
name = "appserver-igm"
2016-04-10 21:34:15 +00:00
2017-06-16 17:53:36 +00:00
base_instance_name = "app"
instance_template = "${google_compute_instance_template.appserver.self_link}"
2016-04-10 21:34:15 +00:00
update_strategy = "NONE"
zone = "us-central1-a"
2016-01-10 14:09:05 +00:00
2017-06-16 17:53:36 +00:00
target_pools = ["${google_compute_target_pool.appserver.self_link}"]
2016-04-10 21:34:15 +00:00
target_size = 2
named_port {
name = "customHTTP"
port = 8888
}
2017-10-21 08:50:32 +00:00
auto_healing_policies {
health_check = "${google_compute_health_check.autohealing.self_link}"
initial_delay_sec = 300
}
2015-02-16 16:07:26 +00:00
}
```
2018-10-31 18:02:24 +00:00
## Example Usage with multiple versions (`google-beta` provider)
2018-06-04 22:34:48 +00:00
```hcl
resource "google_compute_instance_group_manager" "appserver" {
name = "appserver-igm"
base_instance_name = "app"
update_strategy = "NONE"
zone = "us-central1-a"
target_size = 5
version {
instance_template = "${google_compute_instance_template.appserver.self_link}"
}
version {
instance_template = "${google_compute_instance_template.appserver-canary.self_link}"
target_size {
fixed = 1
}
}
}
```
2015-09-11 18:56:20 +00:00
## Argument Reference
2015-02-16 16:07:26 +00:00
The following arguments are supported:
* `base_instance_name` - (Required) The base instance name to use for
2016-04-10 21:34:15 +00:00
instances in this group. The value must be a valid
[RFC1035 ](https://www.ietf.org/rfc/rfc1035.txt ) name. Supported characters
are lowercase letters, numbers, and hyphens (-). Instances are named by
appending a hyphen and a random four-character string to the base instance
name.
2018-06-04 22:34:48 +00:00
* `instance_template` - (Optional) The full URL to an instance template from
2018-10-31 18:02:24 +00:00
which all new instances will be created. This field is only present in the
`google` provider.
2018-06-04 22:34:48 +00:00
* `version` - (Optional) Application versions managed by this instance group. Each
version deals with a specific instance template, allowing canary release scenarios.
2018-10-31 18:02:24 +00:00
Structure is documented below.
2018-10-04 20:20:35 +00:00
This property is in beta, and should be used with the terraform-provider-google-beta provider.
2018-10-09 15:21:19 +00:00
See [Provider Versions ](https://terraform.io/docs/providers/google/provider_versions.html ) for more details on beta fields.
2016-04-10 21:34:15 +00:00
* `name` - (Required) The name of the instance group manager. Must be 1-63
characters long and comply with
[RFC1035 ](https://www.ietf.org/rfc/rfc1035.txt ). Supported characters
include lowercase letters, numbers, and hyphens.
* `zone` - (Required) The zone that instances in this group should be created
in.
- - -
2015-02-16 16:07:26 +00:00
* `description` - (Optional) An optional textual description of the instance
2016-04-10 21:34:15 +00:00
group manager.
2015-02-16 16:07:26 +00:00
2016-04-10 21:34:15 +00:00
* `named_port` - (Optional) The named port configuration. See the section below
for details on configuration.
2015-11-12 20:44:31 +00:00
2018-03-12 20:59:47 +00:00
* `project` - (Optional) The ID of the project in which the resource belongs. If it
2016-04-10 21:34:15 +00:00
is not provided, the provider project is used.
2015-02-16 16:07:26 +00:00
2018-10-03 00:22:42 +00:00
* `update_strategy` - (Optional, Default `"REPLACE"` ) If the `instance_template`
2016-04-10 21:34:15 +00:00
resource is modified, a value of `"NONE"` will prevent any of the managed
2018-10-03 00:22:42 +00:00
instances from being restarted by Terraform. A value of `"REPLACE"` will
2018-10-31 18:02:24 +00:00
restart all of the instances at once. This field is only present in the
`google` provider.
2015-02-16 16:07:26 +00:00
2017-06-16 22:39:44 +00:00
* `target_size` - (Optional) The target number of running instances for this managed
2017-06-13 19:43:18 +00:00
instance group. This value should always be explicitly set unless this resource is attached to
2017-06-16 22:39:44 +00:00
an autoscaler, in which case it should never be set. Defaults to `0` .
2015-02-16 16:07:26 +00:00
2015-07-30 14:46:16 +00:00
* `target_pools` - (Optional) The full URL of all target pools to which new
2016-04-10 21:34:15 +00:00
instances in the group are added. Updating the target pools attribute does
not affect existing instances.
2015-02-16 16:07:26 +00:00
2018-03-20 21:20:43 +00:00
* `wait_for_instances` - (Optional) Whether to wait for all instances to be created/updated before
returning. Note that if this is set to true and the operation does not succeed, Terraform will
continue trying until it times out.
2017-08-02 17:12:16 +00:00
---
2018-10-08 18:14:08 +00:00
* `auto_healing_policies` - (Optional) The autohealing policies for this managed instance
2017-10-21 08:50:32 +00:00
group. You can specify only one value. Structure is documented below. For more information, see the [official documentation ](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances#monitoring_groups ).
2018-10-04 20:20:35 +00:00
This property is in beta, and should be used with the terraform-provider-google-beta provider.
2018-10-09 15:21:19 +00:00
See [Provider Versions ](https://terraform.io/docs/providers/google/provider_versions.html ) for more details on beta fields.
2017-08-02 17:12:16 +00:00
2018-10-31 18:02:24 +00:00
* `update_policy` - (Optional) The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation ](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups ) and [API ](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/patch )
2018-10-04 20:20:35 +00:00
This property is in beta, and should be used with the terraform-provider-google-beta provider.
2018-10-09 15:21:19 +00:00
See [Provider Versions ](https://terraform.io/docs/providers/google/provider_versions.html ) for more details on beta fields.
2018-04-11 22:21:48 +00:00
- - -
2018-03-15 18:10:09 +00:00
2018-10-31 18:02:24 +00:00
The `update_policy` block supports:
2018-03-15 18:10:09 +00:00
```hcl
2018-10-31 18:02:24 +00:00
update_policy{
2018-03-15 18:10:09 +00:00
type = "PROACTIVE"
minimal_action = "REPLACE"
max_surge_percent = 20
max_unavailable_fixed = 2
min_ready_sec = 50
}
```
* `minimal_action` - (Required) - Minimal action to be taken on an instance. Valid values are `"RESTART"` , `"REPLACE"`
* `type` - (Required) - The type of update. Valid values are `"OPPORTUNISTIC"` , `"PROACTIVE"`
* `max_surge_fixed` - (Optional), The maximum number of instances that can be created above the specified targetSize during the update process. Conflicts with `max_surge_percent` . If neither is set, defaults to 1
* `max_surge_percent` - (Optional), The maximum number of instances(calculated as percentage) that can be created above the specified targetSize during the update process. Conflicts with `max_surge_fixed` .
* `max_unavailable_fixed` - (Optional), The maximum number of instances that can be unavailable during the update process. Conflicts with `max_unavailable_percent` . If neither is set, defaults to 1
* `max_unavailable_percent` - (Optional), The maximum number of instances(calculated as percentage) that can be unavailable during the update process. Conflicts with `max_unavailable_fixed` .
* `min_ready_sec` - (Optional), Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600]
- - -
2018-10-31 18:02:24 +00:00
The `named_port` block supports: (Include a `named_port` block for each named-port required).
2016-01-10 14:09:05 +00:00
* `name` - (Required) The name of the port.
* `port` - (Required) The port number.
2018-03-15 18:10:09 +00:00
- - -
2016-01-10 14:09:05 +00:00
2018-10-31 18:02:24 +00:00
The `auto_healing_policies` block supports:
2017-08-02 17:12:16 +00:00
2017-10-21 08:50:32 +00:00
* `health_check` - (Required) The health check resource that signals autohealing.
2017-08-02 17:12:16 +00:00
* `initial_delay_sec` - (Required) The number of seconds that the managed instance group waits before
it applies autohealing policies to new instances or recently recreated instances. Between 0 and 3600.
2018-10-31 18:02:24 +00:00
The `version` block supports:
2018-06-04 22:34:48 +00:00
```hcl
version {
name = "appserver-canary"
instance_template = "${google_compute_instance_template.appserver-canary.self_link}"
target_size {
fixed = 1
}
}
```
```hcl
version {
name = "appserver-canary"
instance_template = "${google_compute_instance_template.appserver-canary.self_link}"
target_size {
percent = 20
}
}
```
* `name` - (Required) - Version name.
* `instance_template` - (Required) - The full URL to an instance template from which all new instances of this version will be created.
* `target_size` - (Optional) - The number of instances calculated as a fixed number or a percentage depending on the settings. Structure is documented below.
2018-10-31 18:02:24 +00:00
-> Exactly one `version` you specify must not have a `target_size` specified. During a rolling update, the instance group manager will fulfill the `target_size`
constraints of every other `version` , and any remaining instances will be provisioned with the version where `target_size` is unset.
The `target_size` block supports:
2018-06-04 22:34:48 +00:00
* `fixed` - (Optional), The number of instances which are managed for this version. Conflicts with `percent` .
* `percent` - (Optional), The number of instances (calculated as percentage) which are managed for this version. Conflicts with `fixed` .
2018-10-31 18:02:24 +00:00
Note that when using `percent` , rounding will be in favor of explicitly set `target_size` values; a managed instance group with 2 instances and 2 `version` s,
one of which has a `target_size.percent` of `60` will create 2 instances of that `version` .
2018-06-04 22:34:48 +00:00
2015-02-16 16:07:26 +00:00
## Attributes Reference
2016-04-10 21:34:15 +00:00
In addition to the arguments listed above, the following computed attributes are
exported:
* `fingerprint` - The fingerprint of the instance group manager.
2015-02-16 16:07:26 +00:00
2015-07-28 00:47:10 +00:00
* `instance_group` - The full URL of the instance group created by the manager.
2015-02-16 16:07:26 +00:00
* `self_link` - The URL of the created resource.
2017-06-16 17:53:36 +00:00
## Import
Instance group managers can be imported using the `name` , e.g.
```
$ terraform import google_compute_instance_group_manager.appserver appserver-igm
```