openinfrastructure / terraform-google-multinic

Connect two VPC networks with an auto-healing, auto-scaling group of IP router instances.
Apache License 2.0
10 stars 5 forks source link

(#43) Set instance group size to 0 when num_instances=0 #44

Closed jeffmccune closed 3 years ago

jeffmccune commented 3 years ago

Without this patch, terraform apply -var num_instances=0 does not scale down to zero when auto scaling is enabled.

See: #43

jeffmccune commented 3 years ago
cowboy terragrunt apply --terragrunt-source ~/workspace/terraform-google-multinic//examples/multiregion -var num_instances=0
[terragrunt] [/Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion] 2021/01/14 10:36:44 Running command: terraform --version
[terragrunt] 2021/01/14 10:36:44 Reading Terragrunt config file at /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/terragrunt.hcl
[terragrunt] [/Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion] 2021/01/14 10:36:44 Detected 1 Hooks
[terragrunt] 2021/01/14 10:36:44 Downloading Terraform configurations from file:///Users/jeff/workspace/terraform-google-multinic into /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/.terragrunt-cache/ErGyK_L92nX35uGU2clT1hJAGx0/x-8zFFJ0A6nQKLFY1xtytr82YFM
[terragrunt] 2021/01/14 10:36:44 Copying files from /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion into /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/.terragrunt-cache/ErGyK_L92nX35uGU2clT1hJAGx0/x-8zFFJ0A6nQKLFY1xtytr82YFM/examples/multiregion
[terragrunt] 2021/01/14 10:36:44 Setting working directory to /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/.terragrunt-cache/ErGyK_L92nX35uGU2clT1hJAGx0/x-8zFFJ0A6nQKLFY1xtytr82YFM/examples/multiregion
[terragrunt] 2021/01/14 10:36:44 The file path /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/.terragrunt-cache/ErGyK_L92nX35uGU2clT1hJAGx0/x-8zFFJ0A6nQKLFY1xtytr82YFM/examples/multiregion/provider.tf already exists and if_exists for code generation set to "skip". Will not regenerate file.
[terragrunt] 2021/01/14 10:36:44 The file path /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/.terragrunt-cache/ErGyK_L92nX35uGU2clT1hJAGx0/x-8zFFJ0A6nQKLFY1xtytr82YFM/examples/multiregion/backend.tf already exists, but was a previously generated file by terragrunt. Since if_exists for code generation is set to "overwrite_terragrunt", regenerating file.
[terragrunt] 2021/01/14 10:36:44 Generated file /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/.terragrunt-cache/ErGyK_L92nX35uGU2clT1hJAGx0/x-8zFFJ0A6nQKLFY1xtytr82YFM/examples/multiregion/backend.tf.
[terragrunt] [/Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion] 2021/01/14 10:36:44 Initializing remote state for the gcs backend
[terragrunt] [/Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion] 2021/01/14 10:36:44 Detected 1 Hooks
[terragrunt] [/Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion] 2021/01/14 10:36:44 Running command: terraform init
Initializing modules...

Initializing the backend...

Initializing provider plugins...

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
[terragrunt] 2021/01/14 10:36:46 Detected 1 Hooks
[terragrunt] 2021/01/14 10:36:46 Executing hook: workspace
[terragrunt] 2021/01/14 10:36:46 Running command: /Users/jeff/workspace/v6/platform/terraform/multinic/50_multiregion/../../workspace dev
[terragrunt] 2021/01/14 10:36:46 Running command: terraform apply -var num_instances=0
module.multinic-us-west2.module.multinic.data.template_file.startup-script-config: Refreshing state...
module.multinic-us-west1.module.multinic.data.template_file.startup-script-config: Refreshing state...
module.multinic-us-west1.data.google_compute_zones.available: Refreshing state...
module.multinic-us-west2.google_compute_address.transit: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west2/addresses/multinic-fwd-transit-us-west2]
module.multinic-us-west2.google_compute_address.main: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west2/addresses/multinic-fwd-main-us-west2]
module.multinic-us-west1.google_compute_address.main: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west1/addresses/multinic-fwd-main-us-west1]
module.multinic-us-west1.google_compute_health_check.multinic-health: Refreshing state... [id=projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west1]
module.multinic-us-west2.google_compute_health_check.multinic-health: Refreshing state... [id=projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west2]
module.multinic-us-west1.google_compute_health_check.multinic-traffic: Refreshing state... [id=projects/multinic-networks-259e/global/healthChecks/multinic-traffic-us-west1]
module.multinic-us-west2.data.google_compute_zones.available: Refreshing state...
module.multinic-us-west1.module.multinic.google_compute_instance_template.multinic: Refreshing state... [id=projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west120210114182849120900000002]
module.multinic-us-west2.module.multinic.google_compute_instance_template.multinic: Refreshing state... [id=projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west220210114182849086000000001]
module.multinic-us-west1.google_compute_address.transit: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west1/addresses/multinic-fwd-transit-us-west1]
module.multinic-us-west2.google_compute_health_check.multinic-traffic: Refreshing state... [id=projects/multinic-networks-259e/global/healthChecks/multinic-traffic-us-west2]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-c"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west1-c/instanceGroupManagers/multinic-us-west1-us-west1-c]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-a"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west1-a/instanceGroupManagers/multinic-us-west1-us-west1-a]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-b"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west1-b/instanceGroupManagers/multinic-us-west1-us-west1-b]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-a"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west2-a/instanceGroupManagers/multinic-us-west2-us-west2-a]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-b"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west2-b/instanceGroupManagers/multinic-us-west2-us-west2-b]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-c"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west2-c/instanceGroupManagers/multinic-us-west2-us-west2-c]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-c"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west1-c/autoscalers/multinic-us-west1-us-west1-c]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-a"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west1-a/autoscalers/multinic-us-west1-us-west1-a]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-b"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west1-b/autoscalers/multinic-us-west1-us-west1-b]
module.multinic-us-west1.google_compute_region_backend_service.multinic-main: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west1/backendServices/multinic-main-us-west1]
module.multinic-us-west1.google_compute_region_backend_service.multinic-transit: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west1/backendServices/multinic-transit-us-west1]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-a"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west2-a/autoscalers/multinic-us-west2-us-west2-a]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-c"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west2-c/autoscalers/multinic-us-west2-us-west2-c]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-b"]: Refreshing state... [id=projects/multinic-networks-259e/zones/us-west2-b/autoscalers/multinic-us-west2-us-west2-b]
module.multinic-us-west2.google_compute_region_backend_service.multinic-main: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west2/backendServices/multinic-main-us-west2]
module.multinic-us-west2.google_compute_region_backend_service.multinic-transit: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west2/backendServices/multinic-transit-us-west2]
module.multinic-us-west1.google_compute_forwarding_rule.transit: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west1/forwardingRules/multinic-transit-us-west1]
module.multinic-us-west1.google_compute_forwarding_rule.main: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west1/forwardingRules/multinic-main-us-west1]
module.multinic-us-west2.google_compute_forwarding_rule.main: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west2/forwardingRules/multinic-main-us-west2]
module.multinic-us-west2.google_compute_forwarding_rule.transit: Refreshing state... [id=projects/multinic-networks-259e/regions/us-west2/forwardingRules/multinic-transit-us-west2]
module.multinic-us-west1.google_compute_route.transit["10.33.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-transit-us-west1-195ba0]
module.multinic-us-west1.google_compute_route.transit["10.32.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-transit-us-west1-4e0873]
module.multinic-us-west1.google_compute_route.main["10.36.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-main-us-west1-9b6cc3]
module.multinic-us-west1.google_compute_route.main["10.37.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-main-us-west1-a0053f]
module.multinic-us-west2.google_compute_route.transit["10.34.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-transit-us-west2-9d28c6]
module.multinic-us-west2.google_compute_route.transit["10.40.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-transit-us-west2-1f6f33]
module.multinic-us-west2.google_compute_route.main["10.38.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-main-us-west2-78ada7]
module.multinic-us-west2.google_compute_route.main["10.41.0.0/20"]: Refreshing state... [id=projects/multinic-networks-259e/global/routes/multinic-main-us-west2-8a5564]

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  ~ update in-place
  - destroy

Terraform will perform the following actions:

  # module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-a"] will be destroyed
  - resource "google_compute_autoscaler" "multinic" {
      - creation_timestamp = "2021-01-14T10:29:25.599-08:00" -> null
      - id                 = "projects/multinic-networks-259e/zones/us-west1-a/autoscalers/multinic-us-west1-us-west1-a" -> null
      - name               = "multinic-us-west1-us-west1-a" -> null
      - project            = "multinic-networks-259e" -> null
      - self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-a/autoscalers/multinic-us-west1-us-west1-a" -> null
      - target             = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-a/instanceGroupManagers/multinic-us-west1-us-west1-a" -> null
      - zone               = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-a" -> null

      - autoscaling_policy {
          - cooldown_period = 45 -> null
          - max_replicas    = 4 -> null
          - min_replicas    = 1 -> null
          - mode            = "ON" -> null

          - cpu_utilization {
              - target = 0.2 -> null
            }
        }
    }

  # module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-b"] will be destroyed
  - resource "google_compute_autoscaler" "multinic" {
      - creation_timestamp = "2021-01-14T10:29:24.584-08:00" -> null
      - id                 = "projects/multinic-networks-259e/zones/us-west1-b/autoscalers/multinic-us-west1-us-west1-b" -> null
      - name               = "multinic-us-west1-us-west1-b" -> null
      - project            = "multinic-networks-259e" -> null
      - self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-b/autoscalers/multinic-us-west1-us-west1-b" -> null
      - target             = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-b/instanceGroupManagers/multinic-us-west1-us-west1-b" -> null
      - zone               = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-b" -> null

      - autoscaling_policy {
          - cooldown_period = 45 -> null
          - max_replicas    = 4 -> null
          - min_replicas    = 1 -> null
          - mode            = "ON" -> null

          - cpu_utilization {
              - target = 0.2 -> null
            }
        }
    }

  # module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-c"] will be destroyed
  - resource "google_compute_autoscaler" "multinic" {
      - creation_timestamp = "2021-01-14T10:29:25.784-08:00" -> null
      - id                 = "projects/multinic-networks-259e/zones/us-west1-c/autoscalers/multinic-us-west1-us-west1-c" -> null
      - name               = "multinic-us-west1-us-west1-c" -> null
      - project            = "multinic-networks-259e" -> null
      - self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-c/autoscalers/multinic-us-west1-us-west1-c" -> null
      - target             = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-c/instanceGroupManagers/multinic-us-west1-us-west1-c" -> null
      - zone               = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-c" -> null

      - autoscaling_policy {
          - cooldown_period = 45 -> null
          - max_replicas    = 4 -> null
          - min_replicas    = 1 -> null
          - mode            = "ON" -> null

          - cpu_utilization {
              - target = 0.2 -> null
            }
        }
    }

  # module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-a"] will be updated in-place
  ~ resource "google_compute_instance_group_manager" "multinic" {
        base_instance_name = "multinic-us-west1"
        fingerprint        = "atkfoabdq3M="
        id                 = "projects/multinic-networks-259e/zones/us-west1-a/instanceGroupManagers/multinic-us-west1-us-west1-a"
        instance_group     = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-a/instanceGroups/multinic-us-west1-us-west1-a"
        name               = "multinic-us-west1-us-west1-a"
        project            = "multinic-networks-259e"
        self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-a/instanceGroupManagers/multinic-us-west1-us-west1-a"
        target_pools       = []
      ~ target_size        = 1 -> 0
        wait_for_instances = false
        zone               = "us-west1-a"

        auto_healing_policies {
            health_check      = "https://www.googleapis.com/compute/beta/projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west1"
            initial_delay_sec = 60
        }

        named_port {
            name = "hc-health"
            port = 9000
        }
        named_port {
            name = "hc-traffic"
            port = 9001
        }

        update_policy {
            max_surge_fixed         = 0
            max_surge_percent       = 20
            max_unavailable_fixed   = 1
            max_unavailable_percent = 0
            min_ready_sec           = 120
            minimal_action          = "REPLACE"
            replacement_method      = "SUBSTITUTE"
            type                    = "PROACTIVE"
        }

        version {
            instance_template = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west120210114182849120900000002"
            name              = "multinic-us-west1"
        }
    }

  # module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-b"] will be updated in-place
  ~ resource "google_compute_instance_group_manager" "multinic" {
        base_instance_name = "multinic-us-west1"
        fingerprint        = "atkfoabdq3M="
        id                 = "projects/multinic-networks-259e/zones/us-west1-b/instanceGroupManagers/multinic-us-west1-us-west1-b"
        instance_group     = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-b/instanceGroups/multinic-us-west1-us-west1-b"
        name               = "multinic-us-west1-us-west1-b"
        project            = "multinic-networks-259e"
        self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-b/instanceGroupManagers/multinic-us-west1-us-west1-b"
        target_pools       = []
      ~ target_size        = 1 -> 0
        wait_for_instances = false
        zone               = "us-west1-b"

        auto_healing_policies {
            health_check      = "https://www.googleapis.com/compute/beta/projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west1"
            initial_delay_sec = 60
        }

        named_port {
            name = "hc-health"
            port = 9000
        }
        named_port {
            name = "hc-traffic"
            port = 9001
        }

        update_policy {
            max_surge_fixed         = 0
            max_surge_percent       = 20
            max_unavailable_fixed   = 1
            max_unavailable_percent = 0
            min_ready_sec           = 120
            minimal_action          = "REPLACE"
            replacement_method      = "SUBSTITUTE"
            type                    = "PROACTIVE"
        }

        version {
            instance_template = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west120210114182849120900000002"
            name              = "multinic-us-west1"
        }
    }

  # module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-c"] will be updated in-place
  ~ resource "google_compute_instance_group_manager" "multinic" {
        base_instance_name = "multinic-us-west1"
        fingerprint        = "atkfoabdq3M="
        id                 = "projects/multinic-networks-259e/zones/us-west1-c/instanceGroupManagers/multinic-us-west1-us-west1-c"
        instance_group     = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-c/instanceGroups/multinic-us-west1-us-west1-c"
        name               = "multinic-us-west1-us-west1-c"
        project            = "multinic-networks-259e"
        self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west1-c/instanceGroupManagers/multinic-us-west1-us-west1-c"
        target_pools       = []
      ~ target_size        = 1 -> 0
        wait_for_instances = false
        zone               = "us-west1-c"

        auto_healing_policies {
            health_check      = "https://www.googleapis.com/compute/beta/projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west1"
            initial_delay_sec = 60
        }

        named_port {
            name = "hc-health"
            port = 9000
        }
        named_port {
            name = "hc-traffic"
            port = 9001
        }

        update_policy {
            max_surge_fixed         = 0
            max_surge_percent       = 20
            max_unavailable_fixed   = 1
            max_unavailable_percent = 0
            min_ready_sec           = 120
            minimal_action          = "REPLACE"
            replacement_method      = "SUBSTITUTE"
            type                    = "PROACTIVE"
        }

        version {
            instance_template = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west120210114182849120900000002"
            name              = "multinic-us-west1"
        }
    }

  # module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-a"] will be destroyed
  - resource "google_compute_autoscaler" "multinic" {
      - creation_timestamp = "2021-01-14T10:29:26.746-08:00" -> null
      - id                 = "projects/multinic-networks-259e/zones/us-west2-a/autoscalers/multinic-us-west2-us-west2-a" -> null
      - name               = "multinic-us-west2-us-west2-a" -> null
      - project            = "multinic-networks-259e" -> null
      - self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-a/autoscalers/multinic-us-west2-us-west2-a" -> null
      - target             = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-a/instanceGroupManagers/multinic-us-west2-us-west2-a" -> null
      - zone               = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-a" -> null

      - autoscaling_policy {
          - cooldown_period = 45 -> null
          - max_replicas    = 4 -> null
          - min_replicas    = 1 -> null
          - mode            = "ON" -> null

          - cpu_utilization {
              - target = 0.2 -> null
            }
        }
    }

  # module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-b"] will be destroyed
  - resource "google_compute_autoscaler" "multinic" {
      - creation_timestamp = "2021-01-14T10:29:26.799-08:00" -> null
      - id                 = "projects/multinic-networks-259e/zones/us-west2-b/autoscalers/multinic-us-west2-us-west2-b" -> null
      - name               = "multinic-us-west2-us-west2-b" -> null
      - project            = "multinic-networks-259e" -> null
      - self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-b/autoscalers/multinic-us-west2-us-west2-b" -> null
      - target             = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-b/instanceGroupManagers/multinic-us-west2-us-west2-b" -> null
      - zone               = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-b" -> null

      - autoscaling_policy {
          - cooldown_period = 45 -> null
          - max_replicas    = 4 -> null
          - min_replicas    = 1 -> null
          - mode            = "ON" -> null

          - cpu_utilization {
              - target = 0.2 -> null
            }
        }
    }

  # module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-c"] will be destroyed
  - resource "google_compute_autoscaler" "multinic" {
      - creation_timestamp = "2021-01-14T10:29:26.605-08:00" -> null
      - id                 = "projects/multinic-networks-259e/zones/us-west2-c/autoscalers/multinic-us-west2-us-west2-c" -> null
      - name               = "multinic-us-west2-us-west2-c" -> null
      - project            = "multinic-networks-259e" -> null
      - self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-c/autoscalers/multinic-us-west2-us-west2-c" -> null
      - target             = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-c/instanceGroupManagers/multinic-us-west2-us-west2-c" -> null
      - zone               = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-c" -> null

      - autoscaling_policy {
          - cooldown_period = 45 -> null
          - max_replicas    = 4 -> null
          - min_replicas    = 1 -> null
          - mode            = "ON" -> null

          - cpu_utilization {
              - target = 0.2 -> null
            }
        }
    }

  # module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-a"] will be updated in-place
  ~ resource "google_compute_instance_group_manager" "multinic" {
        base_instance_name = "multinic-us-west2"
        fingerprint        = "m1vss1K-NQ8="
        id                 = "projects/multinic-networks-259e/zones/us-west2-a/instanceGroupManagers/multinic-us-west2-us-west2-a"
        instance_group     = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-a/instanceGroups/multinic-us-west2-us-west2-a"
        name               = "multinic-us-west2-us-west2-a"
        project            = "multinic-networks-259e"
        self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-a/instanceGroupManagers/multinic-us-west2-us-west2-a"
        target_pools       = []
      ~ target_size        = 1 -> 0
        wait_for_instances = false
        zone               = "us-west2-a"

        auto_healing_policies {
            health_check      = "https://www.googleapis.com/compute/beta/projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west2"
            initial_delay_sec = 60
        }

        named_port {
            name = "hc-health"
            port = 9000
        }
        named_port {
            name = "hc-traffic"
            port = 9001
        }

        update_policy {
            max_surge_fixed         = 0
            max_surge_percent       = 20
            max_unavailable_fixed   = 1
            max_unavailable_percent = 0
            min_ready_sec           = 120
            minimal_action          = "REPLACE"
            replacement_method      = "SUBSTITUTE"
            type                    = "PROACTIVE"
        }

        version {
            instance_template = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west220210114182849086000000001"
            name              = "multinic-us-west2"
        }
    }

  # module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-b"] will be updated in-place
  ~ resource "google_compute_instance_group_manager" "multinic" {
        base_instance_name = "multinic-us-west2"
        fingerprint        = "m1vss1K-NQ8="
        id                 = "projects/multinic-networks-259e/zones/us-west2-b/instanceGroupManagers/multinic-us-west2-us-west2-b"
        instance_group     = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-b/instanceGroups/multinic-us-west2-us-west2-b"
        name               = "multinic-us-west2-us-west2-b"
        project            = "multinic-networks-259e"
        self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-b/instanceGroupManagers/multinic-us-west2-us-west2-b"
        target_pools       = []
      ~ target_size        = 1 -> 0
        wait_for_instances = false
        zone               = "us-west2-b"

        auto_healing_policies {
            health_check      = "https://www.googleapis.com/compute/beta/projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west2"
            initial_delay_sec = 60
        }

        named_port {
            name = "hc-health"
            port = 9000
        }
        named_port {
            name = "hc-traffic"
            port = 9001
        }

        update_policy {
            max_surge_fixed         = 0
            max_surge_percent       = 20
            max_unavailable_fixed   = 1
            max_unavailable_percent = 0
            min_ready_sec           = 120
            minimal_action          = "REPLACE"
            replacement_method      = "SUBSTITUTE"
            type                    = "PROACTIVE"
        }

        version {
            instance_template = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west220210114182849086000000001"
            name              = "multinic-us-west2"
        }
    }

  # module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-c"] will be updated in-place
  ~ resource "google_compute_instance_group_manager" "multinic" {
        base_instance_name = "multinic-us-west2"
        fingerprint        = "m1vss1K-NQ8="
        id                 = "projects/multinic-networks-259e/zones/us-west2-c/instanceGroupManagers/multinic-us-west2-us-west2-c"
        instance_group     = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-c/instanceGroups/multinic-us-west2-us-west2-c"
        name               = "multinic-us-west2-us-west2-c"
        project            = "multinic-networks-259e"
        self_link          = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/zones/us-west2-c/instanceGroupManagers/multinic-us-west2-us-west2-c"
        target_pools       = []
      ~ target_size        = 1 -> 0
        wait_for_instances = false
        zone               = "us-west2-c"

        auto_healing_policies {
            health_check      = "https://www.googleapis.com/compute/beta/projects/multinic-networks-259e/global/healthChecks/multinic-health-us-west2"
            initial_delay_sec = 60
        }

        named_port {
            name = "hc-health"
            port = 9000
        }
        named_port {
            name = "hc-traffic"
            port = 9001
        }

        update_policy {
            max_surge_fixed         = 0
            max_surge_percent       = 20
            max_unavailable_fixed   = 1
            max_unavailable_percent = 0
            min_ready_sec           = 120
            minimal_action          = "REPLACE"
            replacement_method      = "SUBSTITUTE"
            type                    = "PROACTIVE"
        }

        version {
            instance_template = "https://www.googleapis.com/compute/v1/projects/multinic-networks-259e/global/instanceTemplates/multinic-us-west220210114182849086000000001"
            name              = "multinic-us-west2"
        }
    }

Plan: 0 to add, 6 to change, 6 to destroy.

Do you want to perform these actions in workspace "dev"?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-c"]: Destroying... [id=projects/multinic-networks-259e/zones/us-west1-c/autoscalers/multinic-us-west1-us-west1-c]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-c"]: Destroying... [id=projects/multinic-networks-259e/zones/us-west2-c/autoscalers/multinic-us-west2-us-west2-c]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-a"]: Destroying... [id=projects/multinic-networks-259e/zones/us-west2-a/autoscalers/multinic-us-west2-us-west2-a]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-b"]: Modifying... [id=projects/multinic-networks-259e/zones/us-west1-b/instanceGroupManagers/multinic-us-west1-us-west1-b]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-a"]: Modifying... [id=projects/multinic-networks-259e/zones/us-west1-a/instanceGroupManagers/multinic-us-west1-us-west1-a]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-c"]: Modifying... [id=projects/multinic-networks-259e/zones/us-west1-c/instanceGroupManagers/multinic-us-west1-us-west1-c]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-b"]: Modifying... [id=projects/multinic-networks-259e/zones/us-west2-b/instanceGroupManagers/multinic-us-west2-us-west2-b]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-c"]: Modifying... [id=projects/multinic-networks-259e/zones/us-west2-c/instanceGroupManagers/multinic-us-west2-us-west2-c]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-a"]: Modifying... [id=projects/multinic-networks-259e/zones/us-west2-a/instanceGroupManagers/multinic-us-west2-us-west2-a]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-b"]: Destroying... [id=projects/multinic-networks-259e/zones/us-west1-b/autoscalers/multinic-us-west1-us-west1-b]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-c"]: Still destroying... [id=projects/multinic-networks-259e/zones/u...toscalers/multinic-us-west2-us-west2-c, 10s elapsed]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-a"]: Still destroying... [id=projects/multinic-networks-259e/zones/u...toscalers/multinic-us-west2-us-west2-a, 10s elapsed]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-c"]: Still destroying... [id=projects/multinic-networks-259e/zones/u...toscalers/multinic-us-west1-us-west1-c, 10s elapsed]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-a"]: Still modifying... [id=projects/multinic-networks-259e/zones/u...pManagers/multinic-us-west1-us-west1-a, 10s elapsed]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-b"]: Still modifying... [id=projects/multinic-networks-259e/zones/u...pManagers/multinic-us-west2-us-west2-b, 10s elapsed]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-b"]: Still modifying... [id=projects/multinic-networks-259e/zones/u...pManagers/multinic-us-west1-us-west1-b, 10s elapsed]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-c"]: Still modifying... [id=projects/multinic-networks-259e/zones/u...pManagers/multinic-us-west2-us-west2-c, 10s elapsed]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-c"]: Still modifying... [id=projects/multinic-networks-259e/zones/u...pManagers/multinic-us-west1-us-west1-c, 10s elapsed]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-a"]: Still modifying... [id=projects/multinic-networks-259e/zones/u...pManagers/multinic-us-west2-us-west2-a, 10s elapsed]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-b"]: Still destroying... [id=projects/multinic-networks-259e/zones/u...toscalers/multinic-us-west1-us-west1-b, 10s elapsed]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-c"]: Destruction complete after 11s
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-a"]: Destroying... [id=projects/multinic-networks-259e/zones/us-west1-a/autoscalers/multinic-us-west1-us-west1-a]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-b"]: Destruction complete after 11s
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-b"]: Destroying... [id=projects/multinic-networks-259e/zones/us-west2-b/autoscalers/multinic-us-west2-us-west2-b]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-a"]: Destruction complete after 11s
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-c"]: Modifications complete after 11s [id=projects/multinic-networks-259e/zones/us-west2-c/instanceGroupManagers/multinic-us-west2-us-west2-c]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-c"]: Destruction complete after 11s
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-b"]: Modifications complete after 11s [id=projects/multinic-networks-259e/zones/us-west1-b/instanceGroupManagers/multinic-us-west1-us-west1-b]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-a"]: Modifications complete after 11s [id=projects/multinic-networks-259e/zones/us-west1-a/instanceGroupManagers/multinic-us-west1-us-west1-a]
module.multinic-us-west1.module.multinic.google_compute_instance_group_manager.multinic["us-west1-c"]: Modifications complete after 11s [id=projects/multinic-networks-259e/zones/us-west1-c/instanceGroupManagers/multinic-us-west1-us-west1-c]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-a"]: Modifications complete after 12s [id=projects/multinic-networks-259e/zones/us-west2-a/instanceGroupManagers/multinic-us-west2-us-west2-a]
module.multinic-us-west2.module.multinic.google_compute_instance_group_manager.multinic["us-west2-b"]: Modifications complete after 12s [id=projects/multinic-networks-259e/zones/us-west2-b/instanceGroupManagers/multinic-us-west2-us-west2-b]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-a"]: Still destroying... [id=projects/multinic-networks-259e/zones/u...toscalers/multinic-us-west1-us-west1-a, 10s elapsed]
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-b"]: Still destroying... [id=projects/multinic-networks-259e/zones/u...toscalers/multinic-us-west2-us-west2-b, 10s elapsed]
module.multinic-us-west1.module.multinic.google_compute_autoscaler.multinic["us-west1-a"]: Destruction complete after 11s
module.multinic-us-west2.module.multinic.google_compute_autoscaler.multinic["us-west2-b"]: Destruction complete after 11s

Apply complete! Resources: 0 added, 6 changed, 6 destroyed.
gcloud compute instance-groups managed list
NAME                          LOCATION    SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE                            AUTOSCALED
multinic-us-west1-us-west1-a  us-west1-a  zone   multinic-us-west1   0     0            multinic-us-west120210114182849120900000002  no
multinic-us-west1-us-west1-b  us-west1-b  zone   multinic-us-west1   0     0            multinic-us-west120210114182849120900000002  no
multinic-us-west1-us-west1-c  us-west1-c  zone   multinic-us-west1   0     0            multinic-us-west120210114182849120900000002  no
multinic-us-west2-us-west2-c  us-west2-c  zone   multinic-us-west2   0     0            multinic-us-west220210114182849086000000001  no
multinic-us-west2-us-west2-b  us-west2-b  zone   multinic-us-west2   0     0            multinic-us-west220210114182849086000000001  no
multinic-us-west2-us-west2-a  us-west2-a  zone   multinic-us-west2   0     0            multinic-us-west220210114182849086000000001  no