mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-15 23:59:57 +00:00
providers/google: support optionial uuid naming for Instance Template (#6604)
Auto-generating an Instance Template name (or just its suffix) allows the create_before_destroy lifecycle option to function correctly on the Instance Template resource. This in turn allows Instance Group Managers to be updated without being destroyed.
This commit is contained in:
parent
9aaa5b3141
commit
665c4fff2a
@ -58,6 +58,51 @@ resource "google_compute_instance_template" "foobar" {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Using with Instance Group Manager
|
||||||
|
|
||||||
|
Instance Templates cannot be updated after creation with the Google
|
||||||
|
Cloud Platform API. In order to update an Instance Template, Terraform will
|
||||||
|
destroy the existing resource and create a replacement. In order to effectively
|
||||||
|
use an Instance Template resource with an [Instance Group Manager resource][1],
|
||||||
|
it's recommended to specify `create_before_destroy` in a [lifecycle][2] block.
|
||||||
|
Either omit the Instance Template `name` attribute, or specify a partial name
|
||||||
|
with `name_prefix`. Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
resource "google_compute_instance_template" "instance_template" {
|
||||||
|
name_prefix = "instance-template-"
|
||||||
|
machine_type = "n1-standard-1"
|
||||||
|
region = "us-central1"
|
||||||
|
|
||||||
|
// boot disk
|
||||||
|
disk {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
// networking
|
||||||
|
network_interface {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
create_before_destroy = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_compute_instance_group_manager" "instance_group_manager" {
|
||||||
|
name = "instance-group-manager"
|
||||||
|
instance_template = "${google_compute_instance_template.instance_template.self_link}"
|
||||||
|
base_instance_name = "instance-group-manager"
|
||||||
|
zone = "us-central1-f"
|
||||||
|
target_size = "1"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
With this setup Terraform generates a unique name for your Instance
|
||||||
|
Template and can then update the Instance Group manager without conflict before
|
||||||
|
destroying the previous Instance Template.
|
||||||
|
|
||||||
|
|
||||||
## Argument Reference
|
## Argument Reference
|
||||||
|
|
||||||
Note that changing any field for this resource forces a new resource to be created.
|
Note that changing any field for this resource forces a new resource to be created.
|
||||||
@ -70,9 +115,12 @@ The following arguments are supported:
|
|||||||
|
|
||||||
* `machine_type` - (Required) The machine type to create.
|
* `machine_type` - (Required) The machine type to create.
|
||||||
|
|
||||||
* `name` - (Required) A unique name for the resource, required by GCE.
|
|
||||||
|
|
||||||
- - -
|
- - -
|
||||||
|
* `name` - (Optional) The name of the instance template. If you leave
|
||||||
|
this blank, Terraform will auto-generate a unique name.
|
||||||
|
|
||||||
|
* `name_prefix` - (Optional) Creates a unique name beginning with the specified
|
||||||
|
prefix. Conflicts with `name`.
|
||||||
|
|
||||||
* `can_ip_forward` - (Optional) Whether to allow sending and receiving of
|
* `can_ip_forward` - (Optional) Whether to allow sending and receiving of
|
||||||
packets with non-matching source or destination IPs. This defaults to false.
|
packets with non-matching source or destination IPs. This defaults to false.
|
||||||
@ -191,3 +239,6 @@ exported:
|
|||||||
* `self_link` - The URI of the created resource.
|
* `self_link` - The URI of the created resource.
|
||||||
|
|
||||||
* `tags_fingerprint` - The unique fingerprint of the tags.
|
* `tags_fingerprint` - The unique fingerprint of the tags.
|
||||||
|
|
||||||
|
[1]: /docs/providers/google/r/compute_instance_group_manager.html
|
||||||
|
[2]: /docs/configuration/resources.html#lifecycle
|
||||||
|
Loading…
Reference in New Issue
Block a user