PaloAltoNetworks / terraform-google-vmseries-modules

Terraform Reusable Modules for VM-Series on Google Cloud Platform (GCP)
https://registry.terraform.io/modules/PaloAltoNetworks/vmseries-modules/google
MIT License
16 stars 27 forks source link

Error: Invalid value for region: project: required field is not set #154

Closed jeheyer closed 1 year ago

jeheyer commented 1 year ago

Describe the bug

I'm calling module externally like this:

source = "github.com/PaloAltoNetworks/terraform-google-vmseries-modules//modules/vmseries"
project = var.project_id

Expected behavior

TF apply should succeed, as I've supplied all required parameters and plan looks reasonable.

Current behavior

TF apply fails with message "Invalid value for region: project: required field is not set"

Plan looks like this:

  # module.vmseries.google_compute_address.private["0"] will be created
  + resource "google_compute_address" "private" {
      + address                     = (known after apply)
      + address_type             = "INTERNAL"
      + creation_timestamp  = (known after apply)
      + id                              = (known after apply)
      + name                        = "test-0-private"
      + network_tier             = (known after apply)
      + project                     = (known after apply)
      + purpose                    = (known after apply)
      + region                      = "us-central1"
      + self_link                    = (known after apply)
      + subnetwork              = "https://www.googleapis.com/compute/v1/projects/XXX/regions/us-central1/subnetworks/YYY"
      + users                        = (known after apply)
    }

Note project is not being set

Possible solution

Add the project attribute to the google_compute_address resources, similar to how has been done for google_compute_instance

Alternate solution

In the parent module, set the project and region at provider level:

provider "google" {
  project = var.project_id
  region = var.region
}

Steps to reproduce

locals {
  subnet_prefix = "https://www.googleapis.com/compute/v1/projects/${var.project_id}/regions/${var.region}/subnetworks"
}

module "test" {
  source                     = "github.com/PaloAltoNetworks/terraform-google-vmseries-modules//modules/vmseries"
  project                    = var.project_id
  network_interfaces = [
    for subnet_name in var.subnet_names :
    {
      subnetwork = "${local.subnet_prefix}/${subnet_name}"
    }
  ]
}

Screenshots

Context

Doing Proof of Concept. Similar experiments with CheckPoint and Fortigate worked fine.

Your Environment

Google Cloud Platform

welcome-to-palo-alto-networks[bot] commented 1 year ago

:tada: Thanks for opening your first issue here! Welcome to the community!

migara commented 1 year ago

133

migara commented 1 year ago

This is now fixed, please reopen if you still have issues

lronken11 commented 1 year ago

Hi @migara , could you please tag this fix on the repository? Trying to reference the module via the Terraform registry but version 0.5.0 does not have this fix.

migara commented 1 year ago

@lronken11 it is now released as 0.5.1