terraform-google-modules / terraform-google-network

Sets up a new VPC network on Google Cloud
https://registry.terraform.io/modules/terraform-google-modules/network/google
Apache License 2.0
411 stars 1.23k forks source link

Encountering issues when creating a VPC and Firewall rules using the Terraform GCP blueprint. #542

Closed rahul-tiple closed 4 months ago

rahul-tiple commented 7 months ago

TL;DR

When creating VPC and Firewall rules using "Terraform blueprints and modules for Google Cloud," the VPC is successfully created. However, when attempting to create the Firewall at the same time, an error occurs: "Network name already created." This error found because I am using the same source, "terraform-google-modules/network/google." Additionally, when using the source "terraform-google-modules/network/google//modules/firewall-rules," a version conflict error occurs.

How to set the default variables in the firewall_rules variable.tf file:

Expected behavior

https://github.com/terraform-google-modules/terraform-google-network/blob/master/main.tf

Observed behavior

Error: Invalid type specification on .terraform/modules/firewall_rules/modules/firewall-rules/variables.tf line 32, in variable "rules": 32: description = optional(string, null) Keyword "optional" is not a valid type constructor.

and

version conflict

Terraform Configuration

variable "rules" {
  description = "This is DEPRICATED and available for backward compatiblity. Use ingress_rules and egress_rules variables. List of custom rule definitions"
  type = list(object({
    name                    = string
    description             = optional(string, null)
    direction               = optional(string, "INGRESS")
    disabled                = optional(bool, null)
    priority                = optional(number, null)
    ranges                  = optional(list(string), [])
    source_tags             = optional(list(string))
    source_service_accounts = optional(list(string))
    target_tags             = optional(list(string))
    target_service_accounts = optional(list(string))

    allow = optional(list(object({
      protocol = string
      ports    = optional(list(string))
    })), [])
    deny = optional(list(object({
      protocol = string
      ports    = optional(list(string))
    })), [])
    log_config = optional(object({
      metadata = string
    }))
  }))
  default = [
    {
      name                    = "allow-ssh-ingress"
      description             = null
      direction               = "INGRESS"
      priority                = null
      destination_ranges      = ["10.0.0.0/8"]
      source_ranges           = ["0.0.0.0/0"]
      source_tags             = null
      source_service_accounts = null
      target_tags             = null
      target_service_accounts = null
      allow = [{
        protocol = "tcp"
        ports    = ["22"]
      }]
      deny = []
      log_config = {
          metadata = "INCLUDE_ALL_METADATA"
      }
    }
  ]
}

Terraform Version

Your version of Terraform is out of date! The latest version
is 1.7.0. You can update by downloading from https://www.terraform.io/downloads.html
Terraform v0.13.0

Additional information

Please explain how to use the Terraform GCP blueprint and set the default variables in the firewall_rules variable.tf file.

imrannayer commented 7 months ago

@rahul-tiple it seems like you are using older version of Terraform (0.13). Module support TF version 1.3+

https://github.com/terraform-google-modules/terraform-google-network?tab=readme-ov-file#compatibility

github-actions[bot] commented 5 months ago

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days