From e94837aaf7bd904caa071a92386faa0c87229c30 Mon Sep 17 00:00:00 2001 From: chayan kumar ray Date: Mon, 4 Nov 2024 16:40:04 +0000 Subject: [PATCH 1/4] feat(compute): add terraform sample for instanceflexibilitypolicy of rmig --- .../rmig_instance_flexibility_policy/main.tf | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 compute/rmig_instance_flexibility_policy/main.tf diff --git a/compute/rmig_instance_flexibility_policy/main.tf b/compute/rmig_instance_flexibility_policy/main.tf new file mode 100644 index 000000000..db7f081f8 --- /dev/null +++ b/compute/rmig_instance_flexibility_policy/main.tf @@ -0,0 +1,79 @@ +/** +* Copyright 2024 Google LLC +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/** +* Made to resemble: +* gcloud alpha compute instance-groups managed create flex-igm --project=$PROJECT --region=us-central1 \ +* --target-distribution-shape=any-single-zone --instance-redistribution-type NONE \ +* --template example-template --size 3 \ +* --instance-selection "rank=1,name=best-choice,machine-type=n1-standard-1,n1-standard-2" \ +* --instance-selection "rank=2,name=still-ok,machine-type=n2-standard-1" \ +* --instance-selection "rank=3,name=if-nothing-else,machine-type=e2-standard-2" +*/ + +# [START compute_region_igm_instance_flexibility_policy_parent_tag] +resource "google_compute_instance_template" "default" { + name = "example-template" + machine_type = "e2-medium" + disk { + source_image = "debian-cloud/debian-11" + } + network_interface { + network = "default" + } +} + +# [START compute_region_igm_instance_flexibility_policy] +resource "google_compute_region_instance_group_manager" "default" { + name = "flex-igm" + base_instance_name = "tf-test-flex-igm" + region = "us-central1" + + target_size = 3 + distribution_policy_target_shape = "ANY_SINGLE_ZONE" + + version { + instance_template = google_compute_instance_template.default.id + } + + instance_flexibility_policy { + instance_selections { + name = "best-choice" + rank = 1 + machine_types = [ "n1-standard-1", "n1-standard-2" ] + } + instance_selections { + name = "still-ok" + rank = 2 + machine_types = [ "n2-standard-1" ] + } + instance_selections { + name = "if-nothing-else" + rank = 3 + machine_types = [ "e2-standard-2" ] + } + } + + update_policy { + instance_redistribution_type = "NONE" + type = "OPPORTUNISTIC" + minimal_action = "REPLACE" + max_surge_fixed = 0 + max_unavailable_fixed = 6 + } +} +# [END compute_region_igm_instance_flexibility_policy] +# [END compute_region_igm_instance_flexibility_policy_parent_tag] From 42e68d3c290bb6a6ec0095c455838ebceb8901a6 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Wed, 20 Nov 2024 06:52:47 +1100 Subject: [PATCH 2/4] terraform fmt --- .../rmig_instance_flexibility_policy/main.tf | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/compute/rmig_instance_flexibility_policy/main.tf b/compute/rmig_instance_flexibility_policy/main.tf index db7f081f8..21775c0ff 100644 --- a/compute/rmig_instance_flexibility_policy/main.tf +++ b/compute/rmig_instance_flexibility_policy/main.tf @@ -38,11 +38,11 @@ resource "google_compute_instance_template" "default" { # [START compute_region_igm_instance_flexibility_policy] resource "google_compute_region_instance_group_manager" "default" { - name = "flex-igm" - base_instance_name = "tf-test-flex-igm" - region = "us-central1" + name = "flex-igm" + base_instance_name = "tf-test-flex-igm" + region = "us-central1" - target_size = 3 + target_size = 3 distribution_policy_target_shape = "ANY_SINGLE_ZONE" version { @@ -51,19 +51,19 @@ resource "google_compute_region_instance_group_manager" "default" { instance_flexibility_policy { instance_selections { - name = "best-choice" - rank = 1 - machine_types = [ "n1-standard-1", "n1-standard-2" ] + name = "best-choice" + rank = 1 + machine_types = ["n1-standard-1", "n1-standard-2"] } instance_selections { - name = "still-ok" - rank = 2 - machine_types = [ "n2-standard-1" ] + name = "still-ok" + rank = 2 + machine_types = ["n2-standard-1"] } instance_selections { - name = "if-nothing-else" - rank = 3 - machine_types = [ "e2-standard-2" ] + name = "if-nothing-else" + rank = 3 + machine_types = ["e2-standard-2"] } } From 11b7656e58f5e750dd07a6441868e0b9019ec61d Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Wed, 20 Nov 2024 07:19:15 +1100 Subject: [PATCH 3/4] update minimum terraform version for new functionality --- compute/rmig_instance_flexibility_policy/main.tf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/compute/rmig_instance_flexibility_policy/main.tf b/compute/rmig_instance_flexibility_policy/main.tf index 21775c0ff..3d589de2d 100644 --- a/compute/rmig_instance_flexibility_policy/main.tf +++ b/compute/rmig_instance_flexibility_policy/main.tf @@ -24,6 +24,16 @@ * --instance-selection "rank=3,name=if-nothing-else,machine-type=e2-standard-2" */ + +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = ">= 6.12.0" + } + } +} + # [START compute_region_igm_instance_flexibility_policy_parent_tag] resource "google_compute_instance_template" "default" { name = "example-template" From 5994c5de7cd529cd0e579b66143a3b7aa3523c41 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Wed, 20 Nov 2024 07:37:24 +1100 Subject: [PATCH 4/4] require beta provider for new functionality --- compute/rmig_instance_flexibility_policy/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compute/rmig_instance_flexibility_policy/main.tf b/compute/rmig_instance_flexibility_policy/main.tf index 3d589de2d..b2e21a9a0 100644 --- a/compute/rmig_instance_flexibility_policy/main.tf +++ b/compute/rmig_instance_flexibility_policy/main.tf @@ -28,7 +28,7 @@ terraform { required_providers { google = { - source = "hashicorp/google" + source = "hashicorp/google-beta" version = ">= 6.12.0" } }